{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a3a95085",
   "metadata": {},
   "source": [
    "## pandas数据结构"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7222c479",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd #pandas基于numpy,升级"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "885342c7",
   "metadata": {},
   "source": [
    "### Series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "92e6c215",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 6, 9])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    1\n",
       "1    2\n",
       "2    3\n",
       "3    6\n",
       "4    9\n",
       "dtype: int32"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#series\n",
    "l = np.array([1,2,3,6,9])#numpy数组\n",
    "s1 = pd.Series(data = l)\n",
    "display(l,s1)#series是一维的数组，和numpy数组不一样：series多了索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "7be169c9",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    1\n",
       "B    2\n",
       "C    3\n",
       "D    6\n",
       "E    9\n",
       "dtype: int32"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s2 = pd.Series(data=l,index = list('ABCDE'))\n",
    "s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7e1e4ceb",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    149\n",
       "B    130\n",
       "C    118\n",
       "D     99\n",
       "dtype: int64"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s3 = pd.Series(data = {'A':149,'B':130,'C':118,'D':99})\n",
    "s3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8af2b991",
   "metadata": {},
   "source": [
    "### DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "cbcf58df",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>129.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>95.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>43.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>91.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>77.0</td>\n",
       "      <td>113.0</td>\n",
       "      <td>138.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>89.0</td>\n",
       "      <td>85.0</td>\n",
       "      <td>58.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>31.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>137.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>90.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>61.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>116.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>37.0</td>\n",
       "      <td>105.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>116.0</td>\n",
       "      <td>108.0</td>\n",
       "      <td>54.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>97.0</td>\n",
       "      <td>140.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python   Math     En\n",
       "A   129.0   61.0   95.0\n",
       "B    43.0   43.0   91.0\n",
       "C    77.0  113.0  138.0\n",
       "D    89.0   85.0   58.0\n",
       "E    31.0   29.0  137.0\n",
       "F    90.0   10.0    7.0\n",
       "H    61.0   36.0  116.0\n",
       "I    37.0  105.0    2.0\n",
       "J   116.0  108.0   54.0\n",
       "K    97.0  140.0    0.0"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Series 是一维的，功能比较少\n",
    "#DataFrame 是二维的，多个Series共用索引，组成了DataFrame\n",
    "df1 = pd.DataFrame(data = np.random.randint(0,151,size = (10,3)),\n",
    "                  index=list('ABCDEFHIJK'),#行索引\n",
    "                  columns=['Python','Math','En'],dtype= np.float16)#列索引\n",
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "b9c6de9a",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>66</td>\n",
       "      <td>88</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>99</td>\n",
       "      <td>65</td>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>128</td>\n",
       "      <td>137</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "0      66    88  100\n",
       "1      99    65  121\n",
       "2     128   137   45"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = pd.DataFrame(data = {'Python':[66,99,128],'Math':[88,65,137],'En':[100,121,45]})\n",
    "df2#字典，key作为列索引，不指定index默认从0开始索引，自动索引一样"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e3c6bbc",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据查看"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "545d9ace",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>142</td>\n",
       "      <td>113</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>131</td>\n",
       "      <td>111</td>\n",
       "      <td>98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>121</td>\n",
       "      <td>127</td>\n",
       "      <td>123</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>146</td>\n",
       "      <td>27</td>\n",
       "      <td>106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>94</td>\n",
       "      <td>57</td>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>45</td>\n",
       "      <td>18</td>\n",
       "      <td>148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>28</td>\n",
       "      <td>29</td>\n",
       "      <td>93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>102</td>\n",
       "      <td>136</td>\n",
       "      <td>101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>96</td>\n",
       "      <td>128</td>\n",
       "      <td>29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>9</td>\n",
       "      <td>37</td>\n",
       "      <td>73</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en\n",
       "0      142   113   24\n",
       "1      131   111   98\n",
       "2      121   127  123\n",
       "3      146    27  106\n",
       "4       94    57   47\n",
       "..     ...   ...  ...\n",
       "95      45    18  148\n",
       "96      28    29   93\n",
       "97     102   136  101\n",
       "98      96   128   29\n",
       "99       9    37   73\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data = np.random.randint(0,151,size = (100,3)),\n",
    "                 columns=['python','math','en'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "249d67d4",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 3)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape#查看形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a1e18ce1",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>104</td>\n",
       "      <td>74</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>53</td>\n",
       "      <td>66</td>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>30</td>\n",
       "      <td>80</td>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>146</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>104</td>\n",
       "      <td>94</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math   en\n",
       "0     104    74  100\n",
       "1      53    66  121\n",
       "2      30    80  121\n",
       "3       5     3  146\n",
       "4     104    94   10"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()#显示前n个，默认n=5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6d3bf7dc",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>34</td>\n",
       "      <td>83</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>22</td>\n",
       "      <td>106</td>\n",
       "      <td>119</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>26</td>\n",
       "      <td>142</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>57</td>\n",
       "      <td>18</td>\n",
       "      <td>117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>141</td>\n",
       "      <td>104</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en\n",
       "95      34    83   20\n",
       "96      22   106  119\n",
       "97      26   142   60\n",
       "98      57    18  117\n",
       "99     141   104   40"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.tail()#显示后n个"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "55289fb0",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    int32\n",
       "math      int32\n",
       "en        int32\n",
       "dtype: object"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dtypes#数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "1e502931",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 100 entries, 0 to 99\n",
      "Data columns (total 3 columns):\n",
      " #   Column  Non-Null Count  Dtype\n",
      "---  ------  --------------  -----\n",
      " 0   python  100 non-null    int32\n",
      " 1   math    100 non-null    int32\n",
      " 2   en      100 non-null    int32\n",
      "dtypes: int32(3)\n",
      "memory usage: 1.3 KB\n"
     ]
    }
   ],
   "source": [
    "df.info()#信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3dd082e3",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>75.230000</td>\n",
       "      <td>73.560000</td>\n",
       "      <td>75.460000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>45.037101</td>\n",
       "      <td>44.499761</td>\n",
       "      <td>43.657394</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>35.000000</td>\n",
       "      <td>33.750000</td>\n",
       "      <td>36.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>73.500000</td>\n",
       "      <td>77.500000</td>\n",
       "      <td>77.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>110.250000</td>\n",
       "      <td>111.500000</td>\n",
       "      <td>114.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>150.000000</td>\n",
       "      <td>148.000000</td>\n",
       "      <td>147.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           python        math          en\n",
       "count  100.000000  100.000000  100.000000\n",
       "mean    75.230000   73.560000   75.460000\n",
       "std     45.037101   44.499761   43.657394\n",
       "min      0.000000    0.000000    0.000000\n",
       "25%     35.000000   33.750000   36.750000\n",
       "50%     73.500000   77.500000   77.000000\n",
       "75%    110.250000  111.500000  114.250000\n",
       "max    150.000000  148.000000  147.000000"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()#描述：平均值、标准差、中位数、四等分、最大值、最小值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0916219e",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[104,  74, 100],\n",
       "       [ 53,  66, 121],\n",
       "       [ 30,  80, 121],\n",
       "       [  5,   3, 146],\n",
       "       [104,  94,  10],\n",
       "       [129,  31, 134],\n",
       "       [ 88, 113,  73],\n",
       "       [ 44,  25, 140],\n",
       "       [134,   5,  16],\n",
       "       [ 78,  68, 115],\n",
       "       [ 29,  33, 136],\n",
       "       [ 38, 114,  57],\n",
       "       [  6,  94, 119],\n",
       "       [ 19,  65,  36],\n",
       "       [144, 109, 113],\n",
       "       [  6, 104,   4],\n",
       "       [ 77, 144,   9],\n",
       "       [ 13,  88, 147],\n",
       "       [ 98,   3,  90],\n",
       "       [138,  65,  36],\n",
       "       [ 55,  60,  30],\n",
       "       [ 79,  89,  99],\n",
       "       [ 42,  92,  41],\n",
       "       [ 31,  22,  27],\n",
       "       [144,  19,  38],\n",
       "       [ 54,   4,  10],\n",
       "       [ 31, 137,   5],\n",
       "       [ 41,  25,  77],\n",
       "       [ 34,  11,  41],\n",
       "       [ 55,  36, 117],\n",
       "       [ 27,  66,  26],\n",
       "       [ 65,  12,  75],\n",
       "       [ 71,  54, 113],\n",
       "       [ 66,  88,  83],\n",
       "       [ 48,  62, 127],\n",
       "       [105, 124,  55],\n",
       "       [ 42,  85,  22],\n",
       "       [  1,  53,  77],\n",
       "       [ 63,  84, 110],\n",
       "       [ 61, 109, 136],\n",
       "       [ 92,  57,  56],\n",
       "       [ 45,  93,  70],\n",
       "       [ 43, 146, 139],\n",
       "       [ 25, 117,  28],\n",
       "       [114,  80,  86],\n",
       "       [148, 103, 101],\n",
       "       [139, 117, 103],\n",
       "       [ 25, 101,  30],\n",
       "       [112,  43,  38],\n",
       "       [ 84,  34,  64],\n",
       "       [135,   3,  36],\n",
       "       [ 76,  17,   7],\n",
       "       [104, 140, 136],\n",
       "       [131, 128, 139],\n",
       "       [141, 137, 126],\n",
       "       [ 97, 115,  59],\n",
       "       [127,  46,  80],\n",
       "       [ 24,  43,   0],\n",
       "       [147,   5, 101],\n",
       "       [129,   5,  90],\n",
       "       [ 62,  35, 120],\n",
       "       [ 91,  93,  38],\n",
       "       [ 79,  40,  15],\n",
       "       [ 41,  97,  37],\n",
       "       [143,  20,  43],\n",
       "       [105, 130,  48],\n",
       "       [ 86, 116, 112],\n",
       "       [103, 148,  75],\n",
       "       [ 50,  85,  70],\n",
       "       [133, 125, 128],\n",
       "       [102,  30,  83],\n",
       "       [109,  63,   9],\n",
       "       [  7,  58,  12],\n",
       "       [ 93,  98,  14],\n",
       "       [119,  75,  47],\n",
       "       [  3, 143,  69],\n",
       "       [150,  46,  87],\n",
       "       [ 70, 114, 142],\n",
       "       [ 35,  73, 146],\n",
       "       [141, 136,  97],\n",
       "       [ 17,  61, 139],\n",
       "       [147,  20, 114],\n",
       "       [ 98, 111, 110],\n",
       "       [ 25,  64,  29],\n",
       "       [111, 115,  74],\n",
       "       [ 35,  26,  42],\n",
       "       [110, 132,  35],\n",
       "       [  0,   5, 132],\n",
       "       [ 37, 127, 103],\n",
       "       [105, 140,  26],\n",
       "       [ 17, 137,  92],\n",
       "       [115,   0,  93],\n",
       "       [150,  85, 127],\n",
       "       [ 58,  10,  80],\n",
       "       [106,   5,  81],\n",
       "       [ 34,  83,  20],\n",
       "       [ 22, 106, 119],\n",
       "       [ 26, 142,  60],\n",
       "       [ 57,  18, 117],\n",
       "       [141, 104,  40]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.values#返回numpy数组，值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "1b621cd8",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['python', 'math', 'en'], dtype='object')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns#列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b4f559f0",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RangeIndex(start=0, stop=100, step=1)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.index#行索引"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a049e5de",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据输入与输出"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "04b9c27c",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### csv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "73f8ab79",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>136</td>\n",
       "      <td>24</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>68</td>\n",
       "      <td>132</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>72</td>\n",
       "      <td>66</td>\n",
       "      <td>118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>144</td>\n",
       "      <td>142</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>139</td>\n",
       "      <td>64</td>\n",
       "      <td>91</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>132</td>\n",
       "      <td>17</td>\n",
       "      <td>41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>66</td>\n",
       "      <td>103</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>92</td>\n",
       "      <td>108</td>\n",
       "      <td>131</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>89</td>\n",
       "      <td>99</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>123</td>\n",
       "      <td>114</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en\n",
       "0      136    24    9\n",
       "1       68   132   77\n",
       "2       72    66  118\n",
       "3      144   142   22\n",
       "4      139    64   91\n",
       "..     ...   ...  ...\n",
       "95     132    17   41\n",
       "96      66   103   22\n",
       "97      92   108  131\n",
       "98      89    99  126\n",
       "99     123   114   12\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data= np.random.randint(0,151,size= (100,3)),columns= ['python','math','en'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "42c9e5e5",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df.to_csv('./data.csv',sep=',',\n",
    "          index=True,#保存行索引\n",
    "          header=True)#保存列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e6ff9dae",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df.to_csv('./data2.csv',sep=',',\n",
    "          index=False,#不保存行索引\n",
    "          header=True)#保存列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "253e230c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>82</td>\n",
       "      <td>99</td>\n",
       "      <td>53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>100</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>53</td>\n",
       "      <td>34</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>148</td>\n",
       "      <td>2</td>\n",
       "      <td>114</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>35</td>\n",
       "      <td>58</td>\n",
       "      <td>130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>105</td>\n",
       "      <td>44</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>133</td>\n",
       "      <td>67</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>109</td>\n",
       "      <td>142</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>25</td>\n",
       "      <td>0</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en\n",
       "0       82    99   53\n",
       "1        3   100  120\n",
       "2        3     4   30\n",
       "3       53    34   79\n",
       "4      148     2  114\n",
       "..     ...   ...  ...\n",
       "95      35    58  130\n",
       "96     105    44   28\n",
       "97     133    67   10\n",
       "98     109   142   49\n",
       "99      25     0  108\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_csv('./data.csv',index_col=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "448fb772",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### excel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5e82955c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>95</td>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>70</td>\n",
       "      <td>43</td>\n",
       "      <td>150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>127</td>\n",
       "      <td>109</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>94</td>\n",
       "      <td>20</td>\n",
       "      <td>46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>133</td>\n",
       "      <td>2</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>53</td>\n",
       "      <td>62</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>27</td>\n",
       "      <td>101</td>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>69</td>\n",
       "      <td>90</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>123</td>\n",
       "      <td>49</td>\n",
       "      <td>106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>65</td>\n",
       "      <td>71</td>\n",
       "      <td>91</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en\n",
       "0       95    77   77\n",
       "1       70    43  150\n",
       "2      127   109  129\n",
       "3       94    20   46\n",
       "4      133     2   30\n",
       "..     ...   ...  ...\n",
       "95      53    62  138\n",
       "96      27   101   51\n",
       "97      69    90  135\n",
       "98     123    49  106\n",
       "99      65    71   91\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0ca6f013",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-7-231f07c39883>:1: FutureWarning: As the xlwt package is no longer maintained, the xlwt engine will be removed in a future version of pandas. This is the only engine in pandas that supports writing in the xls format. Install openpyxl and write to an xlsx file instead. You can set the option io.excel.xls.writer to 'xlwt' to silence this warning. While this option is deprecated and will also raise a warning, it can be globally set and the warning suppressed.\n",
      "  df.to_excel('./data.xls')\n"
     ]
    }
   ],
   "source": [
    "df.to_excel('./data.xls')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7997c78a",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>95</td>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>70</td>\n",
       "      <td>43</td>\n",
       "      <td>150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>127</td>\n",
       "      <td>109</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>94</td>\n",
       "      <td>20</td>\n",
       "      <td>46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>133</td>\n",
       "      <td>2</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>53</td>\n",
       "      <td>62</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>27</td>\n",
       "      <td>101</td>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>69</td>\n",
       "      <td>90</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>123</td>\n",
       "      <td>49</td>\n",
       "      <td>106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>65</td>\n",
       "      <td>71</td>\n",
       "      <td>91</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en\n",
       "0       95    77   77\n",
       "1       70    43  150\n",
       "2      127   109  129\n",
       "3       94    20   46\n",
       "4      133     2   30\n",
       "..     ...   ...  ...\n",
       "95      53    62  138\n",
       "96      27   101   51\n",
       "97      69    90  135\n",
       "98     123    49  106\n",
       "99      65    71   91\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_excel('./data.xls',\n",
    "             index_col=0)#第一列作为行索引"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b24d1424",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### HDF5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ffe87336",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "Missing optional dependency 'tables'.  Use pip or conda to install tables.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-4-5489aecfcee3>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_hdf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'/data.h5'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'score'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36mto_hdf\u001b[1;34m(self, path_or_buf, key, mode, complevel, complib, append, format, index, min_itemsize, nan_rep, dropna, data_columns, errors, encoding)\u001b[0m\n\u001b[0;32m   2604\u001b[0m         \u001b[1;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mio\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpytables\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2605\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2606\u001b[1;33m         pytables.to_hdf(\n\u001b[0m\u001b[0;32m   2607\u001b[0m             \u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2608\u001b[0m             \u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\io\\pytables.py\u001b[0m in \u001b[0;36mto_hdf\u001b[1;34m(path_or_buf, key, value, mode, complevel, complib, append, format, index, min_itemsize, nan_rep, dropna, data_columns, errors, encoding)\u001b[0m\n\u001b[0;32m    275\u001b[0m     \u001b[0mpath_or_buf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstringify_path\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath_or_buf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    276\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 277\u001b[1;33m         with HDFStore(\n\u001b[0m\u001b[0;32m    278\u001b[0m             \u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcomplevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcomplevel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcomplib\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcomplib\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    279\u001b[0m         ) as store:\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\io\\pytables.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, path, mode, complevel, complib, fletcher32, **kwargs)\u001b[0m\n\u001b[0;32m    540\u001b[0m             \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"format is not a defined argument for HDFStore\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    541\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 542\u001b[1;33m         \u001b[0mtables\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimport_optional_dependency\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"tables\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    543\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    544\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mcomplib\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mcomplib\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mtables\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfilters\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall_complibs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\pandas\\compat\\_optional.py\u001b[0m in \u001b[0;36mimport_optional_dependency\u001b[1;34m(name, extra, raise_on_missing, on_version)\u001b[0m\n\u001b[0;32m    107\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    108\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mraise_on_missing\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 109\u001b[1;33m             \u001b[1;32mraise\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    110\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    111\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mImportError\u001b[0m: Missing optional dependency 'tables'.  Use pip or conda to install tables."
     ]
    }
   ],
   "source": [
    "df.to_hdf('/data.h5',key='score')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2dd17096",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### SQL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d1ff6007",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "from sqlalchemy import create_engine#数据库引擎，构建和数据库的连接"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "73bd4779",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "invalid literal for int() with base 10: ''",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-3-8718590cf941>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;31m#pymysql\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[1;31m#类似网页地址\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mengine\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcreate_engine\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'mssql+pymssql://root:dudongtai123@hostname:/lagou_01?charset=utf8'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32m<string>\u001b[0m in \u001b[0;36mcreate_engine\u001b[1;34m(url, **kwargs)\u001b[0m\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\sqlalchemy\\util\\deprecations.py\u001b[0m in \u001b[0;36mwarned\u001b[1;34m(fn, *args, **kwargs)\u001b[0m\n\u001b[0;32m    296\u001b[0m                         \u001b[0mstacklevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    297\u001b[0m                     )\n\u001b[1;32m--> 298\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    299\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    300\u001b[0m         \u001b[0mdoc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__doc__\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__doc__\u001b[0m \u001b[1;32mor\u001b[0m \u001b[1;34m\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\sqlalchemy\\engine\\create.py\u001b[0m in \u001b[0;36mcreate_engine\u001b[1;34m(url, **kwargs)\u001b[0m\n\u001b[0;32m    516\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    517\u001b[0m     \u001b[1;31m# create url.URL object\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 518\u001b[1;33m     \u001b[0mu\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_url\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmake_url\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    519\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    520\u001b[0m     \u001b[0mu\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mplugins\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mu\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_instantiate_plugins\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\sqlalchemy\\engine\\url.py\u001b[0m in \u001b[0;36mmake_url\u001b[1;34m(name_or_url)\u001b[0m\n\u001b[0;32m    692\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    693\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname_or_url\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mutil\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstring_types\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 694\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0m_parse_rfc1738_args\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname_or_url\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    695\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    696\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mname_or_url\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\sqlalchemy\\engine\\url.py\u001b[0m in \u001b[0;36m_parse_rfc1738_args\u001b[1;34m(name)\u001b[0m\n\u001b[0;32m    750\u001b[0m             \u001b[0mcomponents\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"port\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcomponents\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"port\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    751\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 752\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mURL\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcreate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mcomponents\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    753\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    754\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\sqlalchemy\\engine\\url.py\u001b[0m in \u001b[0;36mcreate\u001b[1;34m(cls, drivername, username, password, host, port, database, query)\u001b[0m\n\u001b[0;32m    139\u001b[0m             \u001b[0mpassword\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    140\u001b[0m             \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_assert_none_str\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"host\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 141\u001b[1;33m             \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_assert_port\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mport\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    142\u001b[0m             \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_assert_none_str\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdatabase\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"database\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    143\u001b[0m             \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_str_dict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\sqlalchemy\\engine\\url.py\u001b[0m in \u001b[0;36m_assert_port\u001b[1;34m(cls, port)\u001b[0m\n\u001b[0;32m    149\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    150\u001b[0m         \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 151\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mport\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    152\u001b[0m         \u001b[1;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    153\u001b[0m             \u001b[1;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Port argument must be an integer or None\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: ''"
     ]
    }
   ],
   "source": [
    "#pymysql\n",
    "#类似网页地址\n",
    "engine = create_engine('mssql+pymssql://root:dudongtai123@hostname:/lagou_01?charset=utf8')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3811ff5f",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'df2' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-4-d25f4395e6c6>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_sql\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'salary'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mengine\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;31m#将python中数据DataFrame保存到mysql\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'df2' is not defined"
     ]
    }
   ],
   "source": [
    "df2.to_sql('salary',engine,index=False)#将python中数据DataFrame保存到mysql"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1f6754f7",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df3 = pd.read_sql('select * from salary limit 50',con=engine)\n",
    "df3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d3c3a0a",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据选取"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90b54e51",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 获取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9005152c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>53</td>\n",
       "      <td>31</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>50</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>58</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>138</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>28</td>\n",
       "      <td>35</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>37</td>\n",
       "      <td>120</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>47</td>\n",
       "      <td>132</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "A      53    31  108\n",
       "B     149    50   69\n",
       "C     119    58   24\n",
       "D      20   138  132\n",
       "E      28    35  127\n",
       "F      37   120   59\n",
       "H      85    97  103\n",
       "I     126    81   84\n",
       "J      47   132    0\n",
       "K      82   149  149"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,151,size = (10,3)),\n",
    "                 index=list('ABCDEFHIJK'),columns=['Python','math','en'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "54595a93",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A     53\n",
       "B    149\n",
       "C    119\n",
       "D     20\n",
       "E     28\n",
       "F     37\n",
       "H     85\n",
       "I    126\n",
       "J     47\n",
       "K     82\n",
       "Name: Python, dtype: int32"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Python']#获取数据series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6e7bb1d4",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A     53\n",
       "B    149\n",
       "C    119\n",
       "D     20\n",
       "E     28\n",
       "F     37\n",
       "H     85\n",
       "I    126\n",
       "J     47\n",
       "K     82\n",
       "Name: Python, dtype: int32"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.Python#属性，DataFrame中列索引，表示属性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bb4994fa",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>53</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>28</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>37</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python   en\n",
       "A      53  108\n",
       "B     149   69\n",
       "C     119   24\n",
       "D      20  132\n",
       "E      28  127\n",
       "F      37   59\n",
       "H      85  103\n",
       "I     126   84\n",
       "J      47    0\n",
       "K      82  149"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[['Python','en']]#获取多列数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "82d4c7ed",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 标签选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3e5ad50a",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python     53\n",
       "math       31\n",
       "en        108\n",
       "Name: A, dtype: int32"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#标签，就是行索引，location=loc位置\n",
    "df.loc['A']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "0626bb38",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>53</td>\n",
       "      <td>31</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>37</td>\n",
       "      <td>120</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "A      53    31  108\n",
       "F      37   120   59\n",
       "K      82   149  149"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[['A','F','K']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "da3f5954",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "53"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc['A','Python']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "0993e057",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A     53\n",
       "C    119\n",
       "F     37\n",
       "Name: Python, dtype: int32"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[['A','C','F'],'Python']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2b29a038",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>31</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>58</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>35</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>132</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   math   en\n",
       "A    31  108\n",
       "C    58   24\n",
       "E    35  127\n",
       "H    97  103\n",
       "J   132    0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc['A'::2,['math','en']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "09556f54",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>53</td>\n",
       "      <td>31</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>50</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>58</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>138</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "A      53    31  108\n",
       "B     149    50   69\n",
       "C     119    58   24\n",
       "D      20   138  132"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc['A':'D',:]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a0debfb",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 位置选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "48105a5d",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python     53\n",
       "math       31\n",
       "en        108\n",
       "Name: A, dtype: int32"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "3f5a4311",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>53</td>\n",
       "      <td>31</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>58</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>28</td>\n",
       "      <td>35</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "A      53    31  108\n",
       "C     119    58   24\n",
       "E      28    35  127"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[[0,2,4]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "119682f6",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>53</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python   en\n",
       "A      53  108\n",
       "B     149   69\n",
       "C     119   24\n",
       "D      20  132"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[0:4,[0,2]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "4d33f68d",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>138</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>37</td>\n",
       "      <td>120</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "D      20   138  132\n",
       "F      37   120   59\n",
       "I     126    81   84"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[3:8:2]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f2e5d6f2",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### boolen索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5e25b958",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>50</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>58</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "B     149    50   69\n",
       "C     119    58   24\n",
       "H      85    97  103\n",
       "I     126    81   84\n",
       "K      82   149  149"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = df.Python >80#将python大于80分的程即获取\n",
    "df[cond]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "237840d6",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>50</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>138</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "B     149    50   69\n",
       "D      20   138  132\n",
       "H      85    97  103\n",
       "I     126    81   84\n",
       "K      82   149  149"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = df.mean(axis=1) > 75#平均分大于75分，筛选出来\n",
    "df[cond]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "f19a8d14",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "H      85    97  103\n",
       "I     126    81   84\n",
       "K      82   149  149"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = (df.Python >70) & (df.math > 70)\n",
    "df[cond]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "87d37e7e",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>58</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>28</td>\n",
       "      <td>35</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "C     119    58   24\n",
       "E      28    35  127\n",
       "H      85    97  103\n",
       "K      82   149  149"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = df.index.isin(['C','E','H','K'])#判断数据是否在数组中\n",
    "df[cond]#筛选出来符合条件的数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0b7982b6",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 赋值操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "318988f8",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>31</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>50</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>58</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>138</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>28</td>\n",
       "      <td>35</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>37</td>\n",
       "      <td>120</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>47</td>\n",
       "      <td>132</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en\n",
       "A     150    31  108\n",
       "B     149    50   69\n",
       "C     119    58   24\n",
       "D      20   138  132\n",
       "E      28    35  127\n",
       "F      37   120   59\n",
       "H      85    97  103\n",
       "I     126    81   84\n",
       "J      47   132    0\n",
       "K      82   149  149"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Python']['A']=150#修改某个位置的值\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "7743e1cb",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>31</td>\n",
       "      <td>108</td>\n",
       "      <td>105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>50</td>\n",
       "      <td>69</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>58</td>\n",
       "      <td>24</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>138</td>\n",
       "      <td>132</td>\n",
       "      <td>94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>28</td>\n",
       "      <td>35</td>\n",
       "      <td>127</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>37</td>\n",
       "      <td>120</td>\n",
       "      <td>59</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "      <td>107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>47</td>\n",
       "      <td>132</td>\n",
       "      <td>0</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en  Java\n",
       "A     150    31  108   105\n",
       "B     149    50   69    16\n",
       "C     119    58   24    23\n",
       "D      20   138  132    94\n",
       "E      28    35  127    11\n",
       "F      37   120   59    67\n",
       "H      85    97  103   107\n",
       "I     126    81   84    59\n",
       "J      47   132    0    78\n",
       "K      82   149  149   129"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Java']=np.random.randint(0,151,size =10)#新增加一列\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "3d8faa77",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>31</td>\n",
       "      <td>108</td>\n",
       "      <td>105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>50</td>\n",
       "      <td>69</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>147</td>\n",
       "      <td>24</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>20</td>\n",
       "      <td>147</td>\n",
       "      <td>132</td>\n",
       "      <td>94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>28</td>\n",
       "      <td>147</td>\n",
       "      <td>127</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>37</td>\n",
       "      <td>120</td>\n",
       "      <td>59</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "      <td>107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>47</td>\n",
       "      <td>132</td>\n",
       "      <td>0</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en  Java\n",
       "A     150    31  108   105\n",
       "B     149    50   69    16\n",
       "C     119   147   24    23\n",
       "D      20   147  132    94\n",
       "E      28   147  127    11\n",
       "F      37   120   59    67\n",
       "H      85    97  103   107\n",
       "I     126    81   84    59\n",
       "J      47   132    0    78\n",
       "K      82   149  149   129"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[['C','D','E'],'math']=147#修改多个人的成绩\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "dcff764f",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>60</td>\n",
       "      <td>108</td>\n",
       "      <td>105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>60</td>\n",
       "      <td>69</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>147</td>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>60</td>\n",
       "      <td>147</td>\n",
       "      <td>132</td>\n",
       "      <td>94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>60</td>\n",
       "      <td>147</td>\n",
       "      <td>127</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>60</td>\n",
       "      <td>120</td>\n",
       "      <td>60</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>85</td>\n",
       "      <td>97</td>\n",
       "      <td>103</td>\n",
       "      <td>107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>60</td>\n",
       "      <td>132</td>\n",
       "      <td>60</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>82</td>\n",
       "      <td>149</td>\n",
       "      <td>149</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en  Java\n",
       "A     150    60  108   105\n",
       "B     149    60   69    60\n",
       "C     119   147   60    60\n",
       "D      60   147  132    94\n",
       "E      60   147  127    60\n",
       "F      60   120   60    67\n",
       "H      85    97  103   107\n",
       "I     126    81   84    60\n",
       "J      60   132   60    78\n",
       "K      82   149  149   129"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = df<60\n",
    "df[cond] = 60#where条件操作，符合条件值，修改，不符合，不改变\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "d379ad65",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>60</td>\n",
       "      <td>108</td>\n",
       "      <td>105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>149</td>\n",
       "      <td>60</td>\n",
       "      <td>69</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>119</td>\n",
       "      <td>147</td>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>160</td>\n",
       "      <td>147</td>\n",
       "      <td>232</td>\n",
       "      <td>94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>60</td>\n",
       "      <td>147</td>\n",
       "      <td>127</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>60</td>\n",
       "      <td>120</td>\n",
       "      <td>60</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>185</td>\n",
       "      <td>97</td>\n",
       "      <td>203</td>\n",
       "      <td>107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>126</td>\n",
       "      <td>81</td>\n",
       "      <td>84</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>60</td>\n",
       "      <td>132</td>\n",
       "      <td>60</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>182</td>\n",
       "      <td>149</td>\n",
       "      <td>249</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  math   en  Java\n",
       "A     150    60  108   105\n",
       "B     149    60   69    60\n",
       "C     119   147   60    60\n",
       "D     160   147  232    94\n",
       "E      60   147  127    60\n",
       "F      60   120   60    67\n",
       "H     185    97  203   107\n",
       "I     126    81   84    60\n",
       "J      60   132   60    78\n",
       "K     182   149  249   129"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[3::3,[0,2]] +=100\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4a9d561",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据集成"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c2060bac",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### concat数据串联"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "ea925b73",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df1 = pd.DataFrame(np.random.randint(0,151,size=(10,3)),\n",
    "                  columns=['Python','Math','En'],\n",
    "                  index=list('ABCDEFHIJK'))\n",
    "df2 = pd.DataFrame(np.random.randint(0,151,size=(10,3)),\n",
    "                  columns=['Python','Math','En'],\n",
    "                  index=list('QWRTUYOPLM'))\n",
    "df3 = pd.DataFrame(np.random.randint(0,151,size=(10,2)),\n",
    "                  columns=['Java','Chinese'],\n",
    "                  index=list('ABCDEFHIJK'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "4aca1543",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>96</td>\n",
       "      <td>65</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>109</td>\n",
       "      <td>82</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>67</td>\n",
       "      <td>55</td>\n",
       "      <td>118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>0</td>\n",
       "      <td>101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>96</td>\n",
       "      <td>136</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>133</td>\n",
       "      <td>88</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>82</td>\n",
       "      <td>90</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>52</td>\n",
       "      <td>68</td>\n",
       "      <td>136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>72</td>\n",
       "      <td>100</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>60</td>\n",
       "      <td>78</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>56</td>\n",
       "      <td>93</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>54</td>\n",
       "      <td>12</td>\n",
       "      <td>58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>132</td>\n",
       "      <td>133</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>65</td>\n",
       "      <td>122</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>67</td>\n",
       "      <td>38</td>\n",
       "      <td>111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>8</td>\n",
       "      <td>37</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>138</td>\n",
       "      <td>61</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>46</td>\n",
       "      <td>2</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>147</td>\n",
       "      <td>40</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>M</th>\n",
       "      <td>1</td>\n",
       "      <td>118</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A      96    65    1\n",
       "B     109    82   43\n",
       "C      67    55  118\n",
       "D     128     0  101\n",
       "E      96   136   80\n",
       "F     133    88   42\n",
       "H      82    90   50\n",
       "I      52    68  136\n",
       "J      72   100  128\n",
       "K      60    78   17\n",
       "Q      56    93   88\n",
       "W      54    12   58\n",
       "R     132   133  104\n",
       "T      65   122   36\n",
       "U      67    38  111\n",
       "Y       8    37   84\n",
       "O     138    61   74\n",
       "P      46     2  126\n",
       "L     147    40   23\n",
       "M       1   118    7"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([df1,df2],axis=0)#默认axis=0，行合并，行增加"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "b3b7d300",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "      <th>Chinese</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>96</td>\n",
       "      <td>65</td>\n",
       "      <td>1</td>\n",
       "      <td>19</td>\n",
       "      <td>93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>109</td>\n",
       "      <td>82</td>\n",
       "      <td>43</td>\n",
       "      <td>6</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>67</td>\n",
       "      <td>55</td>\n",
       "      <td>118</td>\n",
       "      <td>110</td>\n",
       "      <td>68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>0</td>\n",
       "      <td>101</td>\n",
       "      <td>29</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>96</td>\n",
       "      <td>136</td>\n",
       "      <td>80</td>\n",
       "      <td>92</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>133</td>\n",
       "      <td>88</td>\n",
       "      <td>42</td>\n",
       "      <td>140</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>82</td>\n",
       "      <td>90</td>\n",
       "      <td>50</td>\n",
       "      <td>119</td>\n",
       "      <td>125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>52</td>\n",
       "      <td>68</td>\n",
       "      <td>136</td>\n",
       "      <td>15</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>72</td>\n",
       "      <td>100</td>\n",
       "      <td>128</td>\n",
       "      <td>33</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>60</td>\n",
       "      <td>78</td>\n",
       "      <td>17</td>\n",
       "      <td>88</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java  Chinese\n",
       "A      96    65    1    19       93\n",
       "B     109    82   43     6       26\n",
       "C      67    55  118   110       68\n",
       "D     128     0  101    29       36\n",
       "E      96   136   80    92       72\n",
       "F     133    88   42   140       13\n",
       "H      82    90   50   119      125\n",
       "I      52    68  136    15       69\n",
       "J      72   100  128    33       40\n",
       "K      60    78   17    88      138"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([df1,df3],axis=1)#axis=1表示列增加"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "82589c65",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>C++</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>96</td>\n",
       "      <td>142.0</td>\n",
       "      <td>65</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>109</td>\n",
       "      <td>1.0</td>\n",
       "      <td>82</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>67</td>\n",
       "      <td>52.0</td>\n",
       "      <td>55</td>\n",
       "      <td>118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>100.0</td>\n",
       "      <td>0</td>\n",
       "      <td>101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>96</td>\n",
       "      <td>30.0</td>\n",
       "      <td>136</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>133</td>\n",
       "      <td>117.0</td>\n",
       "      <td>88</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>82</td>\n",
       "      <td>110.0</td>\n",
       "      <td>90</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>52</td>\n",
       "      <td>12.0</td>\n",
       "      <td>68</td>\n",
       "      <td>136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>72</td>\n",
       "      <td>85.0</td>\n",
       "      <td>100</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>60</td>\n",
       "      <td>118.0</td>\n",
       "      <td>78</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>56</td>\n",
       "      <td>NaN</td>\n",
       "      <td>93</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>54</td>\n",
       "      <td>NaN</td>\n",
       "      <td>12</td>\n",
       "      <td>58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>132</td>\n",
       "      <td>NaN</td>\n",
       "      <td>133</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>65</td>\n",
       "      <td>NaN</td>\n",
       "      <td>122</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>67</td>\n",
       "      <td>NaN</td>\n",
       "      <td>38</td>\n",
       "      <td>111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>8</td>\n",
       "      <td>NaN</td>\n",
       "      <td>37</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>138</td>\n",
       "      <td>NaN</td>\n",
       "      <td>61</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>46</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>147</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>M</th>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>118</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python    C++  Math   En\n",
       "A      96  142.0    65    1\n",
       "B     109    1.0    82   43\n",
       "C      67   52.0    55  118\n",
       "D     128  100.0     0  101\n",
       "E      96   30.0   136   80\n",
       "F     133  117.0    88   42\n",
       "H      82  110.0    90   50\n",
       "I      52   12.0    68  136\n",
       "J      72   85.0   100  128\n",
       "K      60  118.0    78   17\n",
       "Q      56    NaN    93   88\n",
       "W      54    NaN    12   58\n",
       "R     132    NaN   133  104\n",
       "T      65    NaN   122   36\n",
       "U      67    NaN    38  111\n",
       "Y       8    NaN    37   84\n",
       "O     138    NaN    61   74\n",
       "P      46    NaN     2  126\n",
       "L     147    NaN    40   23\n",
       "M       1    NaN   118    7"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.append(df2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd70565e",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 数据插入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "ca2ea696",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>96</td>\n",
       "      <td>65</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>109</td>\n",
       "      <td>82</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>67</td>\n",
       "      <td>55</td>\n",
       "      <td>118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>0</td>\n",
       "      <td>101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>96</td>\n",
       "      <td>136</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>133</td>\n",
       "      <td>88</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>82</td>\n",
       "      <td>90</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>52</td>\n",
       "      <td>68</td>\n",
       "      <td>136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>72</td>\n",
       "      <td>100</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>60</td>\n",
       "      <td>78</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A      96    65    1\n",
       "B     109    82   43\n",
       "C      67    55  118\n",
       "D     128     0  101\n",
       "E      96   136   80\n",
       "F     133    88   42\n",
       "H      82    90   50\n",
       "I      52    68  136\n",
       "J      72   100  128\n",
       "K      60    78   17"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "265bccad",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>C++</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>96</td>\n",
       "      <td>142</td>\n",
       "      <td>65</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>109</td>\n",
       "      <td>1</td>\n",
       "      <td>82</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>67</td>\n",
       "      <td>52</td>\n",
       "      <td>55</td>\n",
       "      <td>118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>100</td>\n",
       "      <td>0</td>\n",
       "      <td>101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>96</td>\n",
       "      <td>30</td>\n",
       "      <td>136</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>133</td>\n",
       "      <td>117</td>\n",
       "      <td>88</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>82</td>\n",
       "      <td>110</td>\n",
       "      <td>90</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>52</td>\n",
       "      <td>12</td>\n",
       "      <td>68</td>\n",
       "      <td>136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>72</td>\n",
       "      <td>85</td>\n",
       "      <td>100</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>60</td>\n",
       "      <td>118</td>\n",
       "      <td>78</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  C++  Math   En\n",
       "A      96  142    65    1\n",
       "B     109    1    82   43\n",
       "C      67   52    55  118\n",
       "D     128  100     0  101\n",
       "E      96   30   136   80\n",
       "F     133  117    88   42\n",
       "H      82  110    90   50\n",
       "I      52   12    68  136\n",
       "J      72   85   100  128\n",
       "K      60  118    78   17"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.insert(loc=1,#插入位置\n",
    "           column='C++',#插入列名\n",
    "           value=np.random.randint(0,151,size =10))#值\n",
    "df1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "302b288f",
   "metadata": {
    "hidden": true
   },
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f8fad6e1",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### join SQL风格合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "c0eabe9b",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(      name  height\n",
       " 0   softpo     175\n",
       " 1  Brandon     180\n",
       " 2     Ella     169\n",
       " 3   Daniel     177\n",
       " 4       张三     168,\n",
       "       name  weight\n",
       " 0   softpo      70\n",
       " 1  Brandon      65\n",
       " 2     Ella      74\n",
       " 3   Daniel      63\n",
       " 4       李四      88,\n",
       "         名字  salary\n",
       " 0   softpo      84\n",
       " 1  Brandon      23\n",
       " 2     Ella      27\n",
       " 3   Daniel      99\n",
       " 4       张三      80)"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1 = pd.DataFrame(data = {'name':['softpo','Brandon','Ella','Daniel','张三'],\n",
    "                          'height':[175,180,169,177,168]})#身高\n",
    "df2 = pd.DataFrame(data = {'name':['softpo','Brandon','Ella','Daniel','李四'],\n",
    "                           'weight':[70,65,74,63,88]})#体重\n",
    "df3 = pd.DataFrame(data = {'名字':['softpo','Brandon','Ella','Daniel','张三'],\n",
    "                           'salary':np.random.randint(20,100,size = 5)})#薪水\n",
    "df1,df2,df3\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "3004014c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>name</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "      <td>softpo</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "      <td>Brandon</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "      <td>Ella</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "      <td>Daniel</td>\n",
       "      <td>63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168</td>\n",
       "      <td>李四</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height     name  weight\n",
       "0   softpo     175   softpo      70\n",
       "1  Brandon     180  Brandon      65\n",
       "2     Ella     169     Ella      74\n",
       "3   Daniel     177   Daniel      63\n",
       "4       张三     168       李四      88"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([df1,df2],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "74599db7",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "      <td>63</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height  weight\n",
       "0   softpo     175      70\n",
       "1  Brandon     180      65\n",
       "2     Ella     169      74\n",
       "3   Daniel     177      63"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#根据共同属性合并数据\n",
    "#df1和df2共同属性：name\n",
    "#数据库合并join，共同key\n",
    "#inner内合并\n",
    "pd.merge(df1,df2,how = 'inner')#根据共同name合并，两表合并，外键"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "f9cce0b7",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175.0</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180.0</td>\n",
       "      <td>65.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169.0</td>\n",
       "      <td>74.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177.0</td>\n",
       "      <td>63.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>李四</td>\n",
       "      <td>NaN</td>\n",
       "      <td>88.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height  weight\n",
       "0   softpo   175.0    70.0\n",
       "1  Brandon   180.0    65.0\n",
       "2     Ella   169.0    74.0\n",
       "3   Daniel   177.0    63.0\n",
       "4       张三   168.0     NaN\n",
       "5       李四     NaN    88.0"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(df1,df2,how ='outer')#外合并，所有数据保留，不对应的位置填充空数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "3d470f7b",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "      <td>65.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "      <td>74.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "      <td>63.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height  weight\n",
       "0   softpo     175    70.0\n",
       "1  Brandon     180    65.0\n",
       "2     Ella     169    74.0\n",
       "3   Daniel     177    63.0\n",
       "4       张三     168     NaN"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(df1,df2,how='left')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "aff8ffb6",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>名字</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "      <td>softpo</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "      <td>Brandon</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "      <td>Ella</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "      <td>Daniel</td>\n",
       "      <td>99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168</td>\n",
       "      <td>张三</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height       名字  salary\n",
       "0   softpo     175   softpo      84\n",
       "1  Brandon     180  Brandon      23\n",
       "2     Ella     169     Ella      27\n",
       "3   Daniel     177   Daniel      99\n",
       "4       张三     168       张三      80"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(df1,df3,left_on='name',right_on='名字')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "6a5f61c6",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>14</td>\n",
       "      <td>114</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>121</td>\n",
       "      <td>59</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>78</td>\n",
       "      <td>86</td>\n",
       "      <td>109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>106</td>\n",
       "      <td>138</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>121</td>\n",
       "      <td>18</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>85</td>\n",
       "      <td>128</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>126</td>\n",
       "      <td>109</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>56</td>\n",
       "      <td>145</td>\n",
       "      <td>116</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>10</td>\n",
       "      <td>87</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>64</td>\n",
       "      <td>135</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A      14   114   95\n",
       "B     121    59   55\n",
       "C      78    86  109\n",
       "D     106   138  104\n",
       "E     121    18  108\n",
       "F      85   128  143\n",
       "H     126   109  128\n",
       "I      56   145  116\n",
       "J      10    87   35\n",
       "K      64   135  143"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df4 =pd.DataFrame(data=np.random.randint(0,151,size=(10,3)),\n",
    "                 columns=['Python','Math','En'],index = list('ABCDEFHIJK'))\n",
    "df4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "308df3f2",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A     74.3\n",
       "B     78.3\n",
       "C     91.0\n",
       "D    116.0\n",
       "E     82.3\n",
       "F    118.7\n",
       "H    121.0\n",
       "I    105.7\n",
       "J     44.0\n",
       "K    114.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score_mean = df4.mean(axis=1).round(1)\n",
    "score_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "f839569f",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df4.insert(loc=2,column='平均分',value=score_mean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "45e3be3d",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>平均分</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>14</td>\n",
       "      <td>114</td>\n",
       "      <td>74.3</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>121</td>\n",
       "      <td>59</td>\n",
       "      <td>78.3</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>78</td>\n",
       "      <td>86</td>\n",
       "      <td>91.0</td>\n",
       "      <td>109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>106</td>\n",
       "      <td>138</td>\n",
       "      <td>116.0</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>121</td>\n",
       "      <td>18</td>\n",
       "      <td>82.3</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>85</td>\n",
       "      <td>128</td>\n",
       "      <td>118.7</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>126</td>\n",
       "      <td>109</td>\n",
       "      <td>121.0</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>56</td>\n",
       "      <td>145</td>\n",
       "      <td>105.7</td>\n",
       "      <td>116</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>10</td>\n",
       "      <td>87</td>\n",
       "      <td>44.0</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>64</td>\n",
       "      <td>135</td>\n",
       "      <td>114.0</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math    平均分   En\n",
       "A      14   114   74.3   95\n",
       "B     121    59   78.3   55\n",
       "C      78    86   91.0  109\n",
       "D     106   138  116.0  104\n",
       "E     121    18   82.3  108\n",
       "F      85   128  118.7  143\n",
       "H     126   109  121.0  128\n",
       "I      56   145  105.7  116\n",
       "J      10    87   44.0   35\n",
       "K      64   135  114.0  143"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "ca8bb705",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>14</td>\n",
       "      <td>114</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>121</td>\n",
       "      <td>59</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>78</td>\n",
       "      <td>86</td>\n",
       "      <td>109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>106</td>\n",
       "      <td>138</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>121</td>\n",
       "      <td>18</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>85</td>\n",
       "      <td>128</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>126</td>\n",
       "      <td>109</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>56</td>\n",
       "      <td>145</td>\n",
       "      <td>116</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>10</td>\n",
       "      <td>87</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>64</td>\n",
       "      <td>135</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A      14   114   95\n",
       "B     121    59   55\n",
       "C      78    86  109\n",
       "D     106   138  104\n",
       "E     121    18  108\n",
       "F      85   128  143\n",
       "H     126   109  128\n",
       "I      56   145  116\n",
       "J      10    87   35\n",
       "K      64   135  143"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5 = df4.iloc[:,[0,1,3]]\n",
    "df5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "359b4541",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A     74.3\n",
       "B     78.3\n",
       "C     91.0\n",
       "D    116.0\n",
       "E     82.3\n",
       "F    118.7\n",
       "H    121.0\n",
       "I    105.7\n",
       "J     44.0\n",
       "K    114.0\n",
       "Name: 平均分, dtype: float64"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score_mean.name='平均分'\n",
    "score_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "59db7f94",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>平均分</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>14</td>\n",
       "      <td>114</td>\n",
       "      <td>95</td>\n",
       "      <td>74.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>121</td>\n",
       "      <td>59</td>\n",
       "      <td>55</td>\n",
       "      <td>78.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>78</td>\n",
       "      <td>86</td>\n",
       "      <td>109</td>\n",
       "      <td>91.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>106</td>\n",
       "      <td>138</td>\n",
       "      <td>104</td>\n",
       "      <td>116.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>121</td>\n",
       "      <td>18</td>\n",
       "      <td>108</td>\n",
       "      <td>82.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>85</td>\n",
       "      <td>128</td>\n",
       "      <td>143</td>\n",
       "      <td>118.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>126</td>\n",
       "      <td>109</td>\n",
       "      <td>128</td>\n",
       "      <td>121.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>56</td>\n",
       "      <td>145</td>\n",
       "      <td>116</td>\n",
       "      <td>105.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>10</td>\n",
       "      <td>87</td>\n",
       "      <td>35</td>\n",
       "      <td>44.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>64</td>\n",
       "      <td>135</td>\n",
       "      <td>143</td>\n",
       "      <td>114.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En    平均分\n",
       "A      14   114   95   74.3\n",
       "B     121    59   55   78.3\n",
       "C      78    86  109   91.0\n",
       "D     106   138  104  116.0\n",
       "E     121    18  108   82.3\n",
       "F      85   128  143  118.7\n",
       "H     126   109  128  121.0\n",
       "I      56   145  116  105.7\n",
       "J      10    87   35   44.0\n",
       "K      64   135  143  114.0"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(df5,score_mean,\n",
    "         left_index=True,#数据合并根据行索引对应\n",
    "         right_index=True)#右边根据行索引对应"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "31ebd919",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据清洗"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "63591335",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>None</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>NaN</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price\n",
       "0    red     20\n",
       "1   blue     15\n",
       "2    red     20\n",
       "3  green     18\n",
       "4   blue     22\n",
       "5   None     30\n",
       "6    NaN     30\n",
       "7  green     22"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data={'color':['red','blue','red','green','blue',None,np.NAN,'green'],\n",
    "                        'price':[20,15,20,18,22,30,30,22]})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "dbf824b1",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>None</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price\n",
       "0    red     20\n",
       "1   blue     15\n",
       "3  green     18\n",
       "4   blue     22\n",
       "5   None     30\n",
       "7  green     22"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#重复数据删除\n",
    "df.drop_duplicates()#非重复数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "ac64f843",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price\n",
       "0    red     20\n",
       "1   blue     15\n",
       "2    red     20\n",
       "3  green     18\n",
       "4   blue     22\n",
       "7  green     22"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dropna()#空数据过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "de04e8b8",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>None</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price\n",
       "0    red     20\n",
       "1   blue     15\n",
       "3  green     18\n",
       "5   None     30\n",
       "7  green     22"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#删除行或列\n",
    "df.drop(labels=[2,4,6])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "30036336",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   price\n",
       "0     20\n",
       "1     15\n",
       "2     20\n",
       "3     18\n",
       "4     22\n",
       "5     30\n",
       "6     30\n",
       "7     22"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#删除指定的列\n",
    "df.drop(labels='color',axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "66284aa9",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   price\n",
       "0     20\n",
       "1     15\n",
       "2     20\n",
       "3     18\n",
       "4     22\n",
       "5     30\n",
       "6     30\n",
       "7     22"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.filter(items=['price'])#参数的意思，保留数据pirce"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "6d8fd9be",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>None</td>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>NaN</td>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price  size\n",
       "0    red     20  1024\n",
       "1   blue     15  1024\n",
       "2    red     20  1024\n",
       "3  green     18  1024\n",
       "4   blue     22  1024\n",
       "5   None     30  1024\n",
       "6    NaN     30  1024\n",
       "7  green     22  1024"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['size']=1024#广播\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "c73007b0",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   price  size\n",
       "0     20  1024\n",
       "1     15  1024\n",
       "2     20  1024\n",
       "3     18  1024\n",
       "4     22  1024\n",
       "5     30  1024\n",
       "6     30  1024\n",
       "7     22  1024"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.filter(like='i')#模糊匹配，保留了带有i字母的索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "4891b243",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   price  size\n",
       "0     20  1024\n",
       "1     15  1024\n",
       "2     20  1024\n",
       "3     18  1024\n",
       "4     22  1024\n",
       "5     30  1024\n",
       "6     30  1024\n",
       "7     22  1024"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#正则表达式方式很多\n",
    "df.filter(regex='e$')#正则表达式，限制e必须在最后"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "fd4730ad",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([705, 889, 458, 392, 727, 748, 453, 263, 915, 673, 932, 317, 370,\n",
       "        60, 880, 939, 667, 768, 568, 491, 412, 746, 810, 802, 262,  73,\n",
       "       862, 777, 895, 455, 544, 131, 357, 154, 573, 440, 438, 189, 609,\n",
       "        34, 929, 508, 126, 648, 230,  68, 364, 398, 223, 344, 947, 903,\n",
       "        53, 578, 226, 762, 716, 270, 282, 329,  62, 135, 761, 784, 839,\n",
       "       261, 934, 768, 779, 492, 901, 502, 795, 972, 759, 747, 388,  76,\n",
       "       575, 813, 162, 988, 319, 921, 907, 724,  97, 783, 717,  96,  77,\n",
       "       950, 552, 365, 335, 331, 247, 177, 744, 937, 421, 480, 699, 543,\n",
       "       800, 777, 319, 206, 689,  73, 445, 970, 691, 967, 193, 153, 323,\n",
       "       923, 754, 622, 623, 956, 341, 195, 592, 552, 756, 566,  13, 907,\n",
       "       186, 386, 791, 318, 265, 270, 988,  38, 711, 500, 766, 349, 979,\n",
       "       873, 856, 611, 760, 751, 244,  49, 281, 146, 232, 860, 947, 114,\n",
       "       444, 512, 850, 129, 644, 510, 156, 588, 995, 328, 242, 391, 543,\n",
       "       863, 868, 450, 796, 403, 425, 282, 910,   5,  84, 472,  51, 832,\n",
       "       120, 653, 274, 476, 751, 969, 742, 401, 832, 726, 581, 528, 241,\n",
       "        54, 798, 683, 763, 509])"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#异常值过滤\n",
    "a = np.random.randint(0,1000,size =200)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "c676829a",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([705, 458, 392, 727, 748, 453, 263, 673, 317, 370, 667, 768, 568,\n",
       "       491, 412, 746, 262, 777, 455, 544, 131, 357, 154, 573, 440, 438,\n",
       "       189, 609, 508, 126, 648, 230, 364, 398, 223, 344, 578, 226, 762,\n",
       "       716, 270, 282, 329, 135, 761, 784, 261, 768, 779, 492, 502, 795,\n",
       "       759, 747, 388, 575, 162, 319, 724, 783, 717, 552, 365, 335, 331,\n",
       "       247, 177, 744, 421, 480, 699, 543, 800, 777, 319, 206, 689, 445,\n",
       "       691, 193, 153, 323, 754, 622, 623, 341, 195, 592, 552, 756, 566,\n",
       "       186, 386, 791, 318, 265, 270, 711, 500, 766, 349, 611, 760, 751,\n",
       "       244, 281, 146, 232, 114, 444, 512, 129, 644, 510, 156, 588, 328,\n",
       "       242, 391, 543, 450, 796, 403, 425, 282, 472, 120, 653, 274, 476,\n",
       "       751, 742, 401, 726, 581, 528, 241, 798, 683, 763, 509])"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#异常值，大于800，小于100\n",
    "cond = (a <=800) & (a >=100)\n",
    "a[cond]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "c719c973",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.89308225, -1.18044438, -1.6466674 , ...,  0.88266169,\n",
       "       -0.59029897, -0.28082259])"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#正态分布,平均值是0，标准差是1\n",
    "b = np.random.randn(100000)\n",
    "b"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "76531b4d",
   "metadata": {
    "hidden": true
   },
   "source": [
    "$$3\\sigma$$过滤异常值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "13b2266d",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 3.40935706, -3.03572926, -3.02178875,  3.00058496, -3.30340951,\n",
       "        3.44741427,  3.23820818, -3.12373256,  3.33290083, -3.15766139,\n",
       "       -3.13789425,  3.64388131, -3.76356111,  3.18576559, -3.06561858,\n",
       "       -3.04919137,  3.415023  ,  3.0450394 ,  3.68867359, -3.4487652 ,\n",
       "        3.43738066, -3.19479363,  3.08618139,  3.6403308 , -3.03670036,\n",
       "       -3.20965349,  3.03526119,  3.61733993, -3.02833447, -3.08545191,\n",
       "        3.08177262, -3.20266893, -3.16295456, -3.0662283 ,  3.53102766,\n",
       "       -3.19945352, -3.01291252, -3.59148615,  3.16815093,  3.54958406,\n",
       "        3.46903628,  3.04561915, -3.01989814, -3.51792088, -3.19472066,\n",
       "       -3.22799624, -3.04115566,  3.0236772 ,  4.24271785, -3.58403777,\n",
       "        3.06569396,  3.1286268 , -3.17258309, -3.28531649, -3.49741173,\n",
       "       -3.75232416,  3.09137479, -3.56464198,  3.21666386, -3.78426364,\n",
       "       -3.07502311,  3.07902503, -3.60006137, -3.2083341 , -3.12476203,\n",
       "       -3.5030075 ,  3.75206424, -3.24275774, -3.22711018,  4.2317192 ,\n",
       "       -3.15030204, -3.77462684, -4.29486821, -3.04309681,  3.34275055,\n",
       "       -3.01750027,  3.23736559, -3.1199085 ,  3.05669837, -3.27935865,\n",
       "       -3.5338982 ,  3.50022081,  3.04320019, -3.1034919 ,  3.21011671,\n",
       "       -3.09738798,  3.20905965, -3.57073689, -3.1489166 , -3.78547129,\n",
       "        3.09446919, -4.02431598, -3.03922598,  3.15704057, -3.07885765,\n",
       "       -3.24930901,  3.0326926 , -3.40953923,  3.11849773, -3.04476119,\n",
       "       -3.05130082, -3.20772166, -3.12675254, -3.08331251, -3.01292061,\n",
       "        3.06608439,  3.18705842,  3.05454217, -3.35478051,  3.36478954,\n",
       "        3.18231614,  3.02972809, -3.31562456, -3.56608947, -3.1460265 ,\n",
       "        3.05081361, -3.13166707, -3.05767304, -3.14967987, -3.47915031,\n",
       "       -3.38472688, -3.02422437,  3.33700934, -3.96727586,  3.09737545,\n",
       "       -3.40087146, -3.25843371,  3.00348045, -3.01753167, -3.18323834,\n",
       "       -3.20083632, -3.04661224,  3.71392343, -3.21045346, -3.01561463,\n",
       "        3.2044707 ,  3.309203  ,  3.41452004, -3.15572989, -3.19293139,\n",
       "       -3.09420208,  3.05099723,  3.1302602 , -3.27800915,  3.09741488,\n",
       "        3.13481361, -3.06150672,  3.22939119, -3.06911555,  3.03755295,\n",
       "       -3.42990087,  3.1215859 ,  3.57895045, -3.00149445,  3.19700464,\n",
       "        3.06289059, -3.44119453,  3.18807184, -3.21406505, -3.55551089,\n",
       "        3.4475151 , -3.16405874, -3.11835927, -3.33137885,  3.40509892,\n",
       "        4.23410151,  4.55365546, -3.09377614, -3.27137771,  3.06812153,\n",
       "       -3.14769518, -3.34315909,  3.10373217,  3.01764065, -3.17979318,\n",
       "       -4.49481336, -4.11746873, -3.32590255,  3.08947576,  3.44156157,\n",
       "        3.31521952,  3.49003498, -3.91187858, -3.04821239,  3.10430545,\n",
       "        3.07679522,  3.33642199, -3.5940488 , -3.25233654,  3.28604414,\n",
       "        3.97812701, -3.20091999,  3.42835277,  3.57754189, -3.03251797,\n",
       "       -3.28163598, -3.11860034, -3.64965264, -3.27759661, -3.36499271,\n",
       "       -3.20351626,  3.33076961,  3.01204243, -3.03336302, -3.39769619,\n",
       "        4.29287077,  3.28143329,  3.67641914, -3.13560547, -3.05998099,\n",
       "       -3.06974705, -3.0871484 , -3.42634052,  3.52556548,  3.08714962,\n",
       "       -3.11288577,  3.07382023,  3.49818391, -3.15829635, -3.22149287,\n",
       "        3.06391556, -3.0874227 , -3.20912325,  3.41686917, -3.14829715,\n",
       "       -3.03511027,  3.09736665, -3.13996338,  3.14518483,  3.32865604,\n",
       "        3.31218418, -3.16565258, -3.12232279,  3.14773699,  3.09779696,\n",
       "       -3.02384212, -3.15564422, -3.17721254, -3.08435652,  3.48380029,\n",
       "        3.50171786, -3.01439107,  3.5744366 , -3.27529348, -3.05640086,\n",
       "        3.07123824, -3.07341852, -3.11681881, -3.36071421,  3.75284473])"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = np.abs(b)>3*1#这些异常值，找到了\n",
    "b[cond]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b59e041b",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据转换"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "502cd66c",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 轴和元素转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "c8c7f475",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "adb98699",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "A       7           5      1\n",
       "B       7           5      2\n",
       "C       4           8      4\n",
       "D       0           9      1\n",
       "E       0           2      0\n",
       "F       2           0      3\n",
       "H       2           2      2\n",
       "I       8           4      4\n",
       "J       7           2      0\n",
       "K       9           1      9"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data=np.random.randint(0,10,size = (10,3)),\n",
    "                 columns=['Python','Tensorflow','Keras'],\n",
    "                 index = list('ABCDEFHIJK'))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "2ffae882",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df.rename(index = {'A':'X','K':'Y'},#行索引\n",
    "          columns={'Python':'人工智能'},#列索引修改\n",
    "          inplace=True)#替换原数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "b895eedf",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow  Keras\n",
       "X     7           5      1\n",
       "B     7           5      2\n",
       "C     4           8      4\n",
       "D     0           9      1\n",
       "E     0           2      0\n",
       "F     2           0      3\n",
       "H     2           2      2\n",
       "I     8           4      4\n",
       "J     7           2      0\n",
       "Y     9           1      9"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "118ef843",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>7</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>7</td>\n",
       "      <td>50</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow  Keras\n",
       "X     7          50      1\n",
       "B     7          50      2\n",
       "C     4           8      4\n",
       "D     0           9      1\n",
       "E     0           2      0\n",
       "F     2           0      3\n",
       "H     2           2      2\n",
       "I     8           4      4\n",
       "J     7           2      0\n",
       "Y     9           1      9"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.replace(5,50,inplace=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "25edb2c3",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0</td>\n",
       "      <td>1024</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1024</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow  Keras\n",
       "X  1024          50      1\n",
       "B  1024          50   1024\n",
       "C     4           8      4\n",
       "D     0           9      1\n",
       "E     0        1024      0\n",
       "F  1024           0      3\n",
       "H  1024        1024   1024\n",
       "I     8           4      4\n",
       "J  1024        1024      0\n",
       "Y     9           1      9"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.replace([2,7],1024,inplace=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "c8deb0e3",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df.iloc[4,2] =np.NAN#空数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "db7cfa18",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0</td>\n",
       "      <td>1024</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1024</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras\n",
       "X  1024          50     1.0\n",
       "B  1024          50  1024.0\n",
       "C     4           8     4.0\n",
       "D     0           9     1.0\n",
       "E     0        1024     NaN\n",
       "F  1024           0     3.0\n",
       "H  1024        1024  1024.0\n",
       "I     8           4     4.0\n",
       "J  1024        1024     0.0\n",
       "Y     9           1     9.0"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "88780f8f",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>2048</td>\n",
       "      <td>9</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2048</td>\n",
       "      <td>1024</td>\n",
       "      <td>-100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1024</td>\n",
       "      <td>2048</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "      <td>2048.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras\n",
       "X  1024          50     1.0\n",
       "B  1024          50  1024.0\n",
       "C     4           8     4.0\n",
       "D  2048           9     1.0\n",
       "E  2048        1024  -100.0\n",
       "F  1024        2048     3.0\n",
       "H  1024        1024  1024.0\n",
       "I     8           4     4.0\n",
       "J  1024        1024  2048.0\n",
       "Y     9           1     9.0"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.replace({0:2048,np.nan:-100},inplace=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "5878cfa0",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>2048</td>\n",
       "      <td>9</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2048</td>\n",
       "      <td>-1024</td>\n",
       "      <td>-100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1024</td>\n",
       "      <td>2048</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>-1024</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1024</td>\n",
       "      <td>-1024</td>\n",
       "      <td>2048.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras\n",
       "X  1024          50     1.0\n",
       "B  1024          50  1024.0\n",
       "C     4           8     4.0\n",
       "D  2048           9     1.0\n",
       "E  2048       -1024  -100.0\n",
       "F  1024        2048     3.0\n",
       "H  1024       -1024  1024.0\n",
       "I     8           4     4.0\n",
       "J  1024       -1024  2048.0\n",
       "Y     9           1     9.0"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.replace({'Tensorflow':1024},-1024)#指定某一列，数据替换\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d953695",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### map映射元素转变"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "e897dfb2",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X    3.140\n",
       "B    3.140\n",
       "C      NaN\n",
       "D    2.718\n",
       "E    2.718\n",
       "F    3.140\n",
       "H    3.140\n",
       "I      NaN\n",
       "J    3.140\n",
       "Y      NaN\n",
       "Name: 人工智能, dtype: float64"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#map只能针对一列，就是series\n",
    "#如果有一些没有对应，返回就是空\n",
    "df['人工智能'].map({1024:3.14,2048:2.718,6:1108})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "6d16e5e1",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X     True\n",
       "B     True\n",
       "C     True\n",
       "D     True\n",
       "E    False\n",
       "F     True\n",
       "H     True\n",
       "I     True\n",
       "J     True\n",
       "Y     True\n",
       "Name: Keras, dtype: bool"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Keras'].map(lambda x :True if x > 0 else False)#如果大于0返回True，不然返回False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "7fa2e82b",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "      <th>level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>50</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>2048</td>\n",
       "      <td>9</td>\n",
       "      <td>1.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2048</td>\n",
       "      <td>1024</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1024</td>\n",
       "      <td>2048</td>\n",
       "      <td>3.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024</td>\n",
       "      <td>2048.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>9.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras  level\n",
       "X  1024          50     1.0  False\n",
       "B  1024          50  1024.0  False\n",
       "C     4           8     4.0  False\n",
       "D  2048           9     1.0  False\n",
       "E  2048        1024  -100.0   True\n",
       "F  1024        2048     3.0   True\n",
       "H  1024        1024  1024.0   True\n",
       "I     8           4     4.0  False\n",
       "J  1024        1024  2048.0   True\n",
       "Y     9           1     9.0  False"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def convert(x):\n",
    "    if x >=1024:\n",
    "        return True\n",
    "    else:\n",
    "        return False\n",
    "df['level'] =df['Tensorflow'].map(convert)#map映射，映射是Tensor flow中这一列中每一个数据，传递到方法中\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c03666dd",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### apply映射元素转变"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "971f8bac",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X    1124\n",
       "B    1124\n",
       "C     104\n",
       "D    2148\n",
       "E    2148\n",
       "F    1124\n",
       "H    1124\n",
       "I     108\n",
       "J    1124\n",
       "Y     109\n",
       "Name: 人工智能, dtype: int64"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#既可以操作series又可以操作DataFrame\n",
    "df['人工智能'].apply(lambda x : x+100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "815ac38b",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X    0\n",
       "B    0\n",
       "C    0\n",
       "D    0\n",
       "E    1\n",
       "F    1\n",
       "H    1\n",
       "I    0\n",
       "J    1\n",
       "Y    0\n",
       "Name: level, dtype: int64"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['level'].apply(lambda x:1 if x else 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "31bb0979",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "      <th>level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>2024</td>\n",
       "      <td>1050</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>2024</td>\n",
       "      <td>1050</td>\n",
       "      <td>2024.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1004</td>\n",
       "      <td>1008</td>\n",
       "      <td>1004.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3048</td>\n",
       "      <td>1009</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>3048</td>\n",
       "      <td>2024</td>\n",
       "      <td>900.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>2024</td>\n",
       "      <td>3048</td>\n",
       "      <td>1003.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2024</td>\n",
       "      <td>2024</td>\n",
       "      <td>2024.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>1008</td>\n",
       "      <td>1004</td>\n",
       "      <td>1004.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>2024</td>\n",
       "      <td>2024</td>\n",
       "      <td>3048.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>1009</td>\n",
       "      <td>1001</td>\n",
       "      <td>1009.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras  level\n",
       "X  2024        1050  1001.0   1000\n",
       "B  2024        1050  2024.0   1000\n",
       "C  1004        1008  1004.0   1000\n",
       "D  3048        1009  1001.0   1000\n",
       "E  3048        2024   900.0   1001\n",
       "F  2024        3048  1003.0   1001\n",
       "H  2024        2024  2024.0   1001\n",
       "I  1008        1004  1004.0   1000\n",
       "J  2024        2024  3048.0   1001\n",
       "Y  1009        1001  1009.0   1000"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(lambda x :x+1000)#apply对于所有的数据进行映射"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "efb538da",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "      <th>level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1024.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2048.0</td>\n",
       "      <td>2048.0</td>\n",
       "      <td>2048.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     人工智能  Tensorflow   Keras  level\n",
       "0  1024.0        50.0     4.0    0.0\n",
       "1    10.0        10.0    10.0     10\n",
       "2     4.0         1.0  -100.0  False\n",
       "3  2048.0      2048.0  2048.0   True"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def convert(x):\n",
    "    return (x.median(),x.count(),x.min(),x.max())#返回中位数，返回的是计数\n",
    "df.apply(convert)#默认操作列数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "02efb09c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X       (25.5, 4, False, 1024)\n",
       "B      (537.0, 4, False, 1024)\n",
       "C           (4.0, 4, False, 8)\n",
       "D        (5.0, 4, False, 2048)\n",
       "E     (512.5, 4, -100.0, 2048)\n",
       "F       (513.5, 4, True, 2048)\n",
       "H      (1024.0, 4, True, 1024)\n",
       "I           (4.0, 4, False, 8)\n",
       "J    (1024.0, 4, True, 2048.0)\n",
       "Y           (5.0, 4, False, 9)\n",
       "dtype: object"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(convert,axis = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79651015",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### transform"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "6fe6de61",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "A       4           3      0\n",
       "B       0           4      6\n",
       "C       1           1      4\n",
       "D       9           0      9\n",
       "E       5           8      2\n",
       "F       6           7      4\n",
       "H       2           3      2\n",
       "I       6           9      5\n",
       "J       9           1      2\n",
       "K       9           3      0"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "A   -1024\n",
       "B   -1024\n",
       "C   -1024\n",
       "D    1024\n",
       "E   -1024\n",
       "F    1024\n",
       "H   -1024\n",
       "I    1024\n",
       "J    1024\n",
       "K    1024\n",
       "Name: python, dtype: int64"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,10,size = (10,3)),\n",
    "                 columns=['python','tensorflow','keras'],\n",
    "                 index = list('ABCDEFHIJK'))\n",
    "display(df)\n",
    "df['python'].transform(lambda x :1024 if x >5 else -1024)#这个功能和map、apply类似"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "bb04e57e",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sqrt</th>\n",
       "      <th>square</th>\n",
       "      <th>cumsum</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>1.732051</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>16</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2.828427</td>\n",
       "      <td>64</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>2.645751</td>\n",
       "      <td>49</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1.732051</td>\n",
       "      <td>9</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>81</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>1.732051</td>\n",
       "      <td>9</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       sqrt  square  cumsum\n",
       "A  1.732051       9       3\n",
       "B  2.000000      16       7\n",
       "C  1.000000       1       8\n",
       "D  0.000000       0       8\n",
       "E  2.828427      64      16\n",
       "F  2.645751      49      23\n",
       "H  1.732051       9      26\n",
       "I  3.000000      81      35\n",
       "J  1.000000       1      36\n",
       "K  1.732051       9      39"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['tensorflow'].transform([np.sqrt,np.square,np.cumsum])#针对一列，进行了不同的操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "4eff5235",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sqrt</th>\n",
       "      <th>square</th>\n",
       "      <th>cumsum</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>1.732051</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>16</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2.828427</td>\n",
       "      <td>64</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>2.645751</td>\n",
       "      <td>49</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1.732051</td>\n",
       "      <td>9</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>81</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>1.732051</td>\n",
       "      <td>9</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       sqrt  square  cumsum\n",
       "A  1.732051       9       3\n",
       "B  2.000000      16       7\n",
       "C  1.000000       1       8\n",
       "D  0.000000       0       8\n",
       "E  2.828427      64      16\n",
       "F  2.645751      49      23\n",
       "H  1.732051       9      26\n",
       "I  3.000000      81      35\n",
       "J  1.000000       1      36\n",
       "K  1.732051       9      39"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['tensorflow'].apply([np.sqrt,np.square,np.cumsum])#针对一列，进行了不同的操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "fee5c8f6",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>4</td>\n",
       "      <td>16</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>19</td>\n",
       "      <td>64</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>25</td>\n",
       "      <td>49</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>27</td>\n",
       "      <td>9</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>33</td>\n",
       "      <td>81</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>42</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>51</td>\n",
       "      <td>9</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "A       4           9  False\n",
       "B       4          16   True\n",
       "C       5           1  False\n",
       "D      14           0   True\n",
       "E      19          64  False\n",
       "F      25          49  False\n",
       "H      27           9  False\n",
       "I      33          81  False\n",
       "J      42           1  False\n",
       "K      51           9  False"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def convert(x):\n",
    "    if x >5:\n",
    "        return True\n",
    "    else:\n",
    "        return False\n",
    "    #可以针对DataFrame进行运算\n",
    "df.transform({'python':np.cumsum,'tensorflow':np.square,'keras':convert})#对不同的列，执行不同的操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "fc1d38e1",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>4</td>\n",
       "      <td>16</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>19</td>\n",
       "      <td>64</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>25</td>\n",
       "      <td>49</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>27</td>\n",
       "      <td>9</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>33</td>\n",
       "      <td>81</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>42</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>51</td>\n",
       "      <td>9</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "A       4           9  False\n",
       "B       4          16   True\n",
       "C       5           1  False\n",
       "D      14           0   True\n",
       "E      19          64  False\n",
       "F      25          49  False\n",
       "H      27           9  False\n",
       "I      33          81  False\n",
       "J      42           1  False\n",
       "K      51           9  False"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply({'python':np.cumsum,'tensorflow':np.square,'keras':convert})#对不同的列，执行不同的操作"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "016b67c5",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 重排随机抽样哑变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "11b8417d",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "A       4           3      0\n",
       "B       0           4      6\n",
       "C       1           1      4\n",
       "D       9           0      9\n",
       "E       5           8      2\n",
       "F       6           7      4\n",
       "H       2           3      2\n",
       "I       6           9      5\n",
       "J       9           1      2\n",
       "K       9           3      0"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "43a61250",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([8, 5, 9, 1, 7, 4, 0, 3, 2, 6])"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index =np.random.permutation(10)#返回打乱顺序的索引\n",
    "index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "id": "10c97602",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "J       9           1      2\n",
       "F       6           7      4\n",
       "K       9           3      0\n",
       "B       0           4      6\n",
       "I       6           9      5\n",
       "E       5           8      2\n",
       "A       4           3      0\n",
       "D       9           0      9\n",
       "C       1           1      4\n",
       "H       2           3      2"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#重排，索引进行打乱\n",
    "df.take(index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "id": "c2841ab6",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "A       4           3      0\n",
       "J       9           1      2\n",
       "A       4           3      0\n",
       "K       9           3      0\n",
       "A       4           3      0\n",
       "H       2           3      2\n",
       "B       0           4      6\n",
       "J       9           1      2\n",
       "A       4           3      0\n",
       "C       1           1      4\n",
       "I       6           9      5\n",
       "I       6           9      5\n",
       "B       0           4      6\n",
       "C       1           1      4\n",
       "D       9           0      9\n",
       "C       1           1      4\n",
       "H       2           3      2\n",
       "F       6           7      4\n",
       "A       4           3      0\n",
       "K       9           3      0"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#从大量数据中随机抽取数据\n",
    "df.take(np.random.randint(0,10,size =20))#随机抽样20个数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "21cb440f",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>c</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>c</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  key\n",
       "0   a\n",
       "1   b\n",
       "2   a\n",
       "3   b\n",
       "4   c\n",
       "5   b\n",
       "6   c"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = pd.DataFrame(data={'key':['a','b','a','b','c','b','c']})\n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "id": "762f361c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   a  b  c\n",
       "0  1  0  0\n",
       "1  0  1  0\n",
       "2  1  0  0\n",
       "3  0  1  0\n",
       "4  0  0  1\n",
       "5  0  1  0\n",
       "6  0  0  1"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#one-hot,哑变量\n",
    "#str类型数据，经过哑变量变换可以用数字表示\n",
    "pd.get_dummies(df2,prefix='',prefix_sep='')#1表示有，0表示没有"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a74823bd",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据重塑"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "94c1f812",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "A       4           3      0\n",
       "B       0           4      6\n",
       "C       1           1      4\n",
       "D       9           0      9\n",
       "E       5           8      2\n",
       "F       6           7      4\n",
       "H       2           3      2\n",
       "I       6           9      5\n",
       "J       9           1      2\n",
       "K       9           3      0"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "e66853cc",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "      <th>F</th>\n",
       "      <th>H</th>\n",
       "      <th>I</th>\n",
       "      <th>J</th>\n",
       "      <th>K</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tensorflow</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>keras</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            A  B  C  D  E  F  H  I  J  K\n",
       "python      4  0  1  9  5  6  2  6  9  9\n",
       "tensorflow  3  4  1  0  8  7  3  9  1  3\n",
       "keras       0  6  4  9  2  4  2  5  2  0"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.T#转置，行变列，列变行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "id": "eafa5612",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">A</th>\n",
       "      <th>期中</th>\n",
       "      <td>1</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">B</th>\n",
       "      <th>期中</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">C</th>\n",
       "      <th>期中</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">D</th>\n",
       "      <th>期中</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">E</th>\n",
       "      <th>期中</th>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">F</th>\n",
       "      <th>期中</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">H</th>\n",
       "      <th>期中</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">I</th>\n",
       "      <th>期中</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">J</th>\n",
       "      <th>期中</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">K</th>\n",
       "      <th>期中</th>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      python  math  en\n",
       "A 期中       1     7   3\n",
       "  期末       8     9   0\n",
       "B 期中       8     6   6\n",
       "  期末       1     2   5\n",
       "C 期中       8     0   4\n",
       "  期末       7     3   1\n",
       "D 期中       0     9   2\n",
       "  期末       4     4   9\n",
       "E 期中       7     7   0\n",
       "  期末       9     9   5\n",
       "F 期中       7     9   6\n",
       "  期末       5     6   4\n",
       "H 期中       0     0   3\n",
       "  期末       6     3   5\n",
       "I 期中       2     2   7\n",
       "  期末       5     8   7\n",
       "J 期中       9     1   8\n",
       "  期末       8     3   1\n",
       "K 期中       4     9   1\n",
       "  期末       5     9   0"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = pd.DataFrame(np.random.randint(0,10,size =(20,3)),\n",
    "                  columns=['python','math','en'],\n",
    "                  index= pd.MultiIndex.from_product([list('ABCDEFHIJK'),['期中','期末']]))\n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "id": "8f7923a3",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">python</th>\n",
       "      <th colspan=\"2\" halign=\"left\">math</th>\n",
       "      <th colspan=\"2\" halign=\"left\">en</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  python    math    en   \n",
       "      期中 期末   期中 期末 期中 期末\n",
       "A      1  8    7  9  3  0\n",
       "B      8  1    6  2  6  5\n",
       "C      8  7    0  3  4  1\n",
       "D      0  4    9  4  2  9\n",
       "E      7  9    7  9  0  5\n",
       "F      7  5    9  6  6  4\n",
       "H      0  6    0  3  3  5\n",
       "I      2  5    2  8  7  7\n",
       "J      9  8    1  3  8  1\n",
       "K      4  5    9  9  1  0"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.unstack(level = 1 )#将行索引变成列索引,-1表示最后一层"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "id": "86d6bf60",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A  期中  python    1\n",
       "       math      7\n",
       "       en        3\n",
       "   期末  python    8\n",
       "       math      9\n",
       "       en        0\n",
       "B  期中  python    8\n",
       "       math      6\n",
       "       en        6\n",
       "   期末  python    1\n",
       "       math      2\n",
       "       en        5\n",
       "C  期中  python    8\n",
       "       math      0\n",
       "       en        4\n",
       "   期末  python    7\n",
       "       math      3\n",
       "       en        1\n",
       "D  期中  python    0\n",
       "       math      9\n",
       "       en        2\n",
       "   期末  python    4\n",
       "       math      4\n",
       "       en        9\n",
       "E  期中  python    7\n",
       "       math      7\n",
       "       en        0\n",
       "   期末  python    9\n",
       "       math      9\n",
       "       en        5\n",
       "F  期中  python    7\n",
       "       math      9\n",
       "       en        6\n",
       "   期末  python    5\n",
       "       math      6\n",
       "       en        4\n",
       "H  期中  python    0\n",
       "       math      0\n",
       "       en        3\n",
       "   期末  python    6\n",
       "       math      3\n",
       "       en        5\n",
       "I  期中  python    2\n",
       "       math      2\n",
       "       en        7\n",
       "   期末  python    5\n",
       "       math      8\n",
       "       en        7\n",
       "J  期中  python    9\n",
       "       math      1\n",
       "       en        8\n",
       "   期末  python    8\n",
       "       math      3\n",
       "       en        1\n",
       "K  期中  python    4\n",
       "       math      9\n",
       "       en        1\n",
       "   期末  python    5\n",
       "       math      9\n",
       "       en        0\n",
       "dtype: int32"
      ]
     },
     "execution_count": 142,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.stack()#列变成行了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "id": "41b6b378",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">A</th>\n",
       "      <th>en</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">B</th>\n",
       "      <th>en</th>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">C</th>\n",
       "      <th>en</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">D</th>\n",
       "      <th>en</th>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">E</th>\n",
       "      <th>en</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">F</th>\n",
       "      <th>en</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">H</th>\n",
       "      <th>en</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">I</th>\n",
       "      <th>en</th>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">J</th>\n",
       "      <th>en</th>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">K</th>\n",
       "      <th>en</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          期中  期末\n",
       "A en       3   0\n",
       "  math     7   9\n",
       "  python   1   8\n",
       "B en       6   5\n",
       "  math     6   2\n",
       "  python   8   1\n",
       "C en       4   1\n",
       "  math     0   3\n",
       "  python   8   7\n",
       "D en       2   9\n",
       "  math     9   4\n",
       "  python   0   4\n",
       "E en       0   5\n",
       "  math     7   9\n",
       "  python   7   9\n",
       "F en       6   4\n",
       "  math     9   6\n",
       "  python   7   5\n",
       "H en       3   5\n",
       "  math     0   3\n",
       "  python   0   6\n",
       "I en       7   7\n",
       "  math     2   8\n",
       "  python   2   5\n",
       "J en       8   1\n",
       "  math     1   3\n",
       "  python   9   8\n",
       "K en       1   0\n",
       "  math     9   9\n",
       "  python   4   5"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.unstack().stack(level = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "id": "8e712e4a",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    5.20\n",
       "math      5.30\n",
       "en        3.85\n",
       "dtype: float64"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.mean()#计算的是列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "id": "b3d0ec0e",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A  期中    3.666667\n",
       "   期末    5.666667\n",
       "B  期中    6.666667\n",
       "   期末    2.666667\n",
       "C  期中    4.000000\n",
       "   期末    3.666667\n",
       "D  期中    3.666667\n",
       "   期末    5.666667\n",
       "E  期中    4.666667\n",
       "   期末    7.666667\n",
       "F  期中    7.333333\n",
       "   期末    5.000000\n",
       "H  期中    1.000000\n",
       "   期末    4.666667\n",
       "I  期中    3.666667\n",
       "   期末    6.666667\n",
       "J  期中    6.000000\n",
       "   期末    4.000000\n",
       "K  期中    4.666667\n",
       "   期末    4.666667\n",
       "dtype: float64"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.mean(axis = 1 )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "id": "4423ada8",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>期中</th>\n",
       "      <td>4.6</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>5.8</td>\n",
       "      <td>5.6</td>\n",
       "      <td>3.7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en\n",
       "期中     4.6   5.0  4.0\n",
       "期末     5.8   5.6  3.7"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.mean(level = 1)#计算期中期末所有学生的平均分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "id": "32db3263",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4.5</td>\n",
       "      <td>8.0</td>\n",
       "      <td>1.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>4.5</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>7.5</td>\n",
       "      <td>1.5</td>\n",
       "      <td>2.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>2.0</td>\n",
       "      <td>6.5</td>\n",
       "      <td>5.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>2.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>6.0</td>\n",
       "      <td>7.5</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>3.5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8.5</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4.5</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math   en\n",
       "A     4.5   8.0  1.5\n",
       "B     4.5   4.0  5.5\n",
       "C     7.5   1.5  2.5\n",
       "D     2.0   6.5  5.5\n",
       "E     8.0   8.0  2.5\n",
       "F     6.0   7.5  5.0\n",
       "H     3.0   1.5  4.0\n",
       "I     3.5   5.0  7.0\n",
       "J     8.5   2.0  4.5\n",
       "K     4.5   9.0  0.5"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.mean(level=0)#计算每位学生期中和期末的平均分"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f74d89bb",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数学和统计方法"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "165727aa",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 简单统计指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "fd8bf932",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math  en\n",
       "Q       0     8   0\n",
       "W       1     6   2\n",
       "E       5     5   5\n",
       "R       1     0   0\n",
       "T       5     3   6\n",
       "Y       8     4   0\n",
       "U       3     2   5\n",
       "I       9     6   1\n",
       "O       1     8   5\n",
       "P       1     1   8\n",
       "A       4     1   3\n",
       "S       3     9   4\n",
       "D       4     1   1\n",
       "F       3     9   0\n",
       "G       3     2   1\n",
       "H       2     3   6\n",
       "J       4     1   1\n",
       "K       6     0   9\n",
       "L       4     2   7\n",
       "Z       7     2   2"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,10,size = (20,3)),\n",
    "                 columns=['python','math','en'],index= list('QWERTYUIOPASDFGHJKLZ'))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5bbe45ac",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math   en\n",
       "Q       0     8  0.0\n",
       "W       1     6  2.0\n",
       "E       5     5  5.0\n",
       "R       1     0  0.0\n",
       "T       5     3  6.0\n",
       "Y       8     4  0.0\n",
       "U       3     2  NaN\n",
       "I       9     6  1.0\n",
       "O       1     8  5.0\n",
       "P       1     1  8.0\n",
       "A       4     1  3.0\n",
       "S       3     9  4.0\n",
       "D       4     1  1.0\n",
       "F       3     9  0.0\n",
       "G       3     2  1.0\n",
       "H       2     3  6.0\n",
       "J       4     1  1.0\n",
       "K       6     0  9.0\n",
       "L       4     2  7.0\n",
       "Z       7     2  2.0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[6,2] = np.NAN\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c1ecafb5",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    20\n",
       "math      20\n",
       "en        19\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.count()#统计非空数据的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "9e2f8051",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    3.700000\n",
       "math      3.650000\n",
       "en        3.210526\n",
       "dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "python    3.5\n",
       "math      2.5\n",
       "en        2.0\n",
       "dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(df.mean(),df.median())#平均值，中位数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "b5587abd",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    0.0\n",
       "math      0.0\n",
       "en        0.0\n",
       "dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "python    9.0\n",
       "math      9.0\n",
       "en        9.0\n",
       "dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(df.min(),df.max())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "299dc483",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 5, 8, 3, 9, 4, 2, 6, 7])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['python'].unique()#去除重复数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b81bd461",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    4\n",
       "2    4\n",
       "0    2\n",
       "3    2\n",
       "6    2\n",
       "8    2\n",
       "9    2\n",
       "4    1\n",
       "5    1\n",
       "Name: math, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['math'].value_counts()#统计出现频次"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d3cb18d8",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.00</th>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.25</th>\n",
       "      <td>1.75</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.50</th>\n",
       "      <td>3.50</td>\n",
       "      <td>2.5</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.75</th>\n",
       "      <td>5.00</td>\n",
       "      <td>6.0</td>\n",
       "      <td>5.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.00</th>\n",
       "      <td>9.00</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      python  math   en\n",
       "0.00    0.00   0.0  0.0\n",
       "0.25    1.75   1.0  1.0\n",
       "0.50    3.50   2.5  2.0\n",
       "0.75    5.00   6.0  5.5\n",
       "1.00    9.00   9.0  9.0"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.quantile(q = [0,0.25,0.5,0.75,1])#获取百分位数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "4bf27812",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>20.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>19.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.7</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>2.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.8</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.5</td>\n",
       "      <td>2.5</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>5.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       python  math    en\n",
       "count    20.0  20.0  19.0\n",
       "mean      3.7   3.6   3.2\n",
       "std       2.5   3.0   3.0\n",
       "min       0.0   0.0   0.0\n",
       "25%       1.8   1.0   1.0\n",
       "50%       3.5   2.5   2.0\n",
       "75%       5.0   6.0   5.5\n",
       "max       9.0   9.0   9.0"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe().round(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6332154",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 索引标签、位置获取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "21729889",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['python'].argmax()#返回第一个最大值的索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "97d3f6c7",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['en'].argmin()#最小值索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "2b586279",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    I\n",
       "math      S\n",
       "en        K\n",
       "dtype: object"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.idxmax()#最大值的标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "8970384e",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    Q\n",
       "math      R\n",
       "en        Q\n",
       "dtype: object"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.idxmin()#最小值的标签"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8fc1d12",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 更多的统计指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "4ea9ec73",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>14</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>12</td>\n",
       "      <td>22</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>20</td>\n",
       "      <td>26</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>23</td>\n",
       "      <td>28</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>32</td>\n",
       "      <td>34</td>\n",
       "      <td>14.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>33</td>\n",
       "      <td>42</td>\n",
       "      <td>19.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>34</td>\n",
       "      <td>43</td>\n",
       "      <td>27.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>38</td>\n",
       "      <td>44</td>\n",
       "      <td>30.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>41</td>\n",
       "      <td>53</td>\n",
       "      <td>34.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>45</td>\n",
       "      <td>54</td>\n",
       "      <td>35.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>48</td>\n",
       "      <td>63</td>\n",
       "      <td>35.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>51</td>\n",
       "      <td>65</td>\n",
       "      <td>36.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>53</td>\n",
       "      <td>68</td>\n",
       "      <td>42.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>57</td>\n",
       "      <td>69</td>\n",
       "      <td>43.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>63</td>\n",
       "      <td>69</td>\n",
       "      <td>52.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>67</td>\n",
       "      <td>71</td>\n",
       "      <td>59.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>74</td>\n",
       "      <td>73</td>\n",
       "      <td>61.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math    en\n",
       "Q       0     8   0.0\n",
       "W       1    14   2.0\n",
       "E       6    19   7.0\n",
       "R       7    19   7.0\n",
       "T      12    22  13.0\n",
       "Y      20    26  13.0\n",
       "U      23    28   NaN\n",
       "I      32    34  14.0\n",
       "O      33    42  19.0\n",
       "P      34    43  27.0\n",
       "A      38    44  30.0\n",
       "S      41    53  34.0\n",
       "D      45    54  35.0\n",
       "F      48    63  35.0\n",
       "G      51    65  36.0\n",
       "H      53    68  42.0\n",
       "J      57    69  43.0\n",
       "K      63    69  52.0\n",
       "L      67    71  59.0\n",
       "Z      74    73  61.0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cumsum()#累加和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "07b6bb16",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>0</td>\n",
       "      <td>48</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0</td>\n",
       "      <td>240</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math   en\n",
       "Q       0     8  0.0\n",
       "W       0    48  0.0\n",
       "E       0   240  0.0\n",
       "R       0     0  0.0\n",
       "T       0     0  0.0\n",
       "Y       0     0  0.0\n",
       "U       0     0  NaN\n",
       "I       0     0  0.0\n",
       "O       0     0  0.0\n",
       "P       0     0  0.0\n",
       "A       0     0  0.0\n",
       "S       0     0  0.0\n",
       "D       0     0  0.0\n",
       "F       0     0  0.0\n",
       "G       0     0  0.0\n",
       "H       0     0  0.0\n",
       "J       0     0  0.0\n",
       "K       0     0  0.0\n",
       "L       0     0  0.0\n",
       "Z       0     0  0.0"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cumprod()#累乘和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "477fe046",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math   en\n",
       "Q       0     8  0.0\n",
       "W       0     6  0.0\n",
       "E       0     5  0.0\n",
       "R       0     0  0.0\n",
       "T       0     0  0.0\n",
       "Y       0     0  0.0\n",
       "U       0     0  NaN\n",
       "I       0     0  0.0\n",
       "O       0     0  0.0\n",
       "P       0     0  0.0\n",
       "A       0     0  0.0\n",
       "S       0     0  0.0\n",
       "D       0     0  0.0\n",
       "F       0     0  0.0\n",
       "G       0     0  0.0\n",
       "H       0     0  0.0\n",
       "J       0     0  0.0\n",
       "K       0     0  0.0\n",
       "L       0     0  0.0\n",
       "Z       0     0  0.0"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cummin()#累计最小值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "c42a7962",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math   en\n",
       "Q       0     8  0.0\n",
       "W       1     8  2.0\n",
       "E       5     8  5.0\n",
       "R       5     8  5.0\n",
       "T       5     8  6.0\n",
       "Y       8     8  6.0\n",
       "U       8     8  NaN\n",
       "I       9     8  6.0\n",
       "O       9     8  6.0\n",
       "P       9     8  8.0\n",
       "A       9     8  8.0\n",
       "S       9     9  8.0\n",
       "D       9     9  8.0\n",
       "F       9     9  8.0\n",
       "G       9     9  8.0\n",
       "H       9     9  8.0\n",
       "J       9     9  8.0\n",
       "K       9     9  9.0\n",
       "L       9     9  9.0\n",
       "Z       9     9  9.0"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cummax()#累计最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5c0310b0",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    2.451637\n",
       "math      3.030980\n",
       "en        2.954826\n",
       "dtype: float64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.std()#标准差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "ab598998",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    6.010526\n",
       "math      9.186842\n",
       "en        8.730994\n",
       "dtype: float64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.var()#方差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "3e535f79",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>-4.0</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>-5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>4.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>-5.0</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>6.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>-8.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0.0</td>\n",
       "      <td>-7.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>-1.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-8.0</td>\n",
       "      <td>-3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>-1.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>0.0</td>\n",
       "      <td>-7.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>-1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>-5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>-2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  math   en\n",
       "Q     NaN   NaN  NaN\n",
       "W     1.0  -2.0  2.0\n",
       "E     4.0  -1.0  3.0\n",
       "R    -4.0  -5.0 -5.0\n",
       "T     4.0   3.0  6.0\n",
       "Y     3.0   1.0 -6.0\n",
       "U    -5.0  -2.0  NaN\n",
       "I     6.0   4.0  NaN\n",
       "O    -8.0   2.0  4.0\n",
       "P     0.0  -7.0  3.0\n",
       "A     3.0   0.0 -5.0\n",
       "S    -1.0   8.0  1.0\n",
       "D     1.0  -8.0 -3.0\n",
       "F    -1.0   8.0 -1.0\n",
       "G     0.0  -7.0  1.0\n",
       "H    -1.0   1.0  5.0\n",
       "J     2.0  -2.0 -5.0\n",
       "K     2.0  -1.0  8.0\n",
       "L    -2.0   2.0 -2.0\n",
       "Z     3.0   0.0 -5.0"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.diff()#差分，当前数据减去上一个的差值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "80d45705",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>inf</td>\n",
       "      <td>-0.250</td>\n",
       "      <td>inf</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>4.000</td>\n",
       "      <td>-0.167</td>\n",
       "      <td>1.500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>-0.800</td>\n",
       "      <td>-1.000</td>\n",
       "      <td>-1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>4.000</td>\n",
       "      <td>inf</td>\n",
       "      <td>inf</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>0.600</td>\n",
       "      <td>0.333</td>\n",
       "      <td>-1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>-0.625</td>\n",
       "      <td>-0.500</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>2.000</td>\n",
       "      <td>2.000</td>\n",
       "      <td>inf</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>-0.889</td>\n",
       "      <td>0.333</td>\n",
       "      <td>4.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.875</td>\n",
       "      <td>0.600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>3.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.625</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>-0.250</td>\n",
       "      <td>8.000</td>\n",
       "      <td>0.333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0.333</td>\n",
       "      <td>-0.889</td>\n",
       "      <td>-0.750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>-0.250</td>\n",
       "      <td>8.000</td>\n",
       "      <td>-1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.778</td>\n",
       "      <td>inf</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>-0.333</td>\n",
       "      <td>0.500</td>\n",
       "      <td>5.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1.000</td>\n",
       "      <td>-0.667</td>\n",
       "      <td>-0.833</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>0.500</td>\n",
       "      <td>-1.000</td>\n",
       "      <td>8.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>-0.333</td>\n",
       "      <td>inf</td>\n",
       "      <td>-0.222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>0.750</td>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.714</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python   math     en\n",
       "Q     NaN    NaN    NaN\n",
       "W     inf -0.250    inf\n",
       "E   4.000 -0.167  1.500\n",
       "R  -0.800 -1.000 -1.000\n",
       "T   4.000    inf    inf\n",
       "Y   0.600  0.333 -1.000\n",
       "U  -0.625 -0.500    NaN\n",
       "I   2.000  2.000    inf\n",
       "O  -0.889  0.333  4.000\n",
       "P   0.000 -0.875  0.600\n",
       "A   3.000  0.000 -0.625\n",
       "S  -0.250  8.000  0.333\n",
       "D   0.333 -0.889 -0.750\n",
       "F  -0.250  8.000 -1.000\n",
       "G   0.000 -0.778    inf\n",
       "H  -0.333  0.500  5.000\n",
       "J   1.000 -0.667 -0.833\n",
       "K   0.500 -1.000  8.000\n",
       "L  -0.333    inf -0.222\n",
       "Z   0.750  0.000 -0.714"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.pct_change().round(3)#计算百分比变化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "75ab9cd5",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 高级统计指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "986e80d9",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>6.010526</td>\n",
       "      <td>-1.215789</td>\n",
       "      <td>-0.330409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>-1.215789</td>\n",
       "      <td>9.186842</td>\n",
       "      <td>-2.219298</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>en</th>\n",
       "      <td>-0.330409</td>\n",
       "      <td>-2.219298</td>\n",
       "      <td>8.730994</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          python      math        en\n",
       "python  6.010526 -1.215789 -0.330409\n",
       "math   -1.215789  9.186842 -2.219298\n",
       "en     -0.330409 -2.219298  8.730994"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cov()#协方差，自己和别人进行计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "b26e4886",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python    6.010526\n",
       "math      9.186842\n",
       "en        8.730994\n",
       "dtype: float64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "1dc107c7",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-1.2157894736842105"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['python'].cov(df['math'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "b686982a",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>python</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.163613</td>\n",
       "      <td>-0.044495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>math</th>\n",
       "      <td>-0.163613</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.243195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>en</th>\n",
       "      <td>-0.044495</td>\n",
       "      <td>-0.243195</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          python      math        en\n",
       "python  1.000000 -0.163613 -0.044495\n",
       "math   -0.163613  1.000000 -0.243195\n",
       "en     -0.044495 -0.243195  1.000000"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.corr()#相关性系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "a8f937e2",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "python   -0.044495\n",
       "math     -0.243195\n",
       "en        1.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.corrwith(df['en'])#一列的相关性系数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38c10e51",
   "metadata": {},
   "source": [
    "## 排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "0b64b0bd",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>7</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>11</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>19</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>18</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>15</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>10</td>\n",
       "      <td>15</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "Q       2           4      4\n",
       "W      16           3     15\n",
       "E       2           6      5\n",
       "R       6           2      5\n",
       "T       0          16      8\n",
       "Y      10          19      2\n",
       "U       7          14     10\n",
       "I      11           8      8\n",
       "O      19          17      6\n",
       "P       8           2     17\n",
       "A      18           0     11\n",
       "S      15          15      3\n",
       "D       9          13     10\n",
       "F       3          13      7\n",
       "G      19           9     12\n",
       "H       2          12      2\n",
       "J       3          11      4\n",
       "K      15          18     15\n",
       "L      10          15     14\n",
       "Z      11          10     16"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,20,size = (20,3)),\n",
    "                 columns=['python','tensorflow','keras'],index = list('QWERTYUIOPASDFGHJKLZ'))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "6fefe7e2",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>7</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>15</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>19</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>10</td>\n",
       "      <td>15</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>11</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>18</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "Z      11          10     16\n",
       "Y      10          19      2\n",
       "W      16           3     15\n",
       "U       7          14     10\n",
       "T       0          16      8\n",
       "S      15          15      3\n",
       "R       6           2      5\n",
       "Q       2           4      4\n",
       "P       8           2     17\n",
       "O      19          17      6\n",
       "L      10          15     14\n",
       "K      15          18     15\n",
       "J       3          11      4\n",
       "I      11           8      8\n",
       "H       2          12      2\n",
       "G      19           9     12\n",
       "F       3          13      7\n",
       "E       2           6      5\n",
       "D       9          13     10\n",
       "A      18           0     11"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_index(axis = 0,ascending = False)#降序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "bf0cdbf2",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>18</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>11</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>10</td>\n",
       "      <td>15</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>19</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>15</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>7</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "A      18           0     11\n",
       "D       9          13     10\n",
       "E       2           6      5\n",
       "F       3          13      7\n",
       "G      19           9     12\n",
       "H       2          12      2\n",
       "I      11           8      8\n",
       "J       3          11      4\n",
       "K      15          18     15\n",
       "L      10          15     14\n",
       "O      19          17      6\n",
       "P       8           2     17\n",
       "Q       2           4      4\n",
       "R       6           2      5\n",
       "S      15          15      3\n",
       "T       0          16      8\n",
       "U       7          14     10\n",
       "W      16           3     15\n",
       "Y      10          19      2\n",
       "Z      11          10     16"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_index(ascending = True)#升序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "3e4a0af0",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>7</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>10</td>\n",
       "      <td>15</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>11</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>15</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>18</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>19</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "T       0          16      8\n",
       "Q       2           4      4\n",
       "E       2           6      5\n",
       "H       2          12      2\n",
       "J       3          11      4\n",
       "F       3          13      7\n",
       "R       6           2      5\n",
       "U       7          14     10\n",
       "P       8           2     17\n",
       "D       9          13     10\n",
       "L      10          15     14\n",
       "Y      10          19      2\n",
       "I      11           8      8\n",
       "Z      11          10     16\n",
       "S      15          15      3\n",
       "K      15          18     15\n",
       "W      16           3     15\n",
       "A      18           0     11\n",
       "G      19           9     12\n",
       "O      19          17      6"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(by = 'python',ascending=True)#根据python属性进行升序排列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "cf8b309c",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>7</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>10</td>\n",
       "      <td>15</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>11</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>15</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>18</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>19</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "T       0          16      8\n",
       "Q       2           4      4\n",
       "E       2           6      5\n",
       "H       2          12      2\n",
       "J       3          11      4\n",
       "F       3          13      7\n",
       "R       6           2      5\n",
       "U       7          14     10\n",
       "P       8           2     17\n",
       "D       9          13     10\n",
       "L      10          15     14\n",
       "Y      10          19      2\n",
       "I      11           8      8\n",
       "Z      11          10     16\n",
       "S      15          15      3\n",
       "K      15          18     15\n",
       "W      16           3     15\n",
       "A      18           0     11\n",
       "G      19           9     12\n",
       "O      19          17      6"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(by = ['python','tensorflow'],ascending=True)\n",
    "#先根据python进行排序，如果相等再根据tensorflow排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "698b1341",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>19</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>18</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>15</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "O      19          17      6\n",
       "G      19           9     12\n",
       "A      18           0     11\n",
       "W      16           3     15\n",
       "S      15          15      3"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.nlargest(n =5,columns='python')#根据python进行排序，获取最大的5个数值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "3192f6f7",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>tensorflow</th>\n",
       "      <th>keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>15</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python  tensorflow  keras\n",
       "Y      10          19      2\n",
       "H       2          12      2\n",
       "S      15          15      3\n",
       "Q       2           4      4\n",
       "J       3          11      4"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.nsmallest(5,columns='keras')#根据keras进行排序，获取最小的5个"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "869952a2",
   "metadata": {},
   "source": [
    "## 分箱操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "3fbaa77a",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "      <td>84</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>72</td>\n",
       "      <td>132</td>\n",
       "      <td>131</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>80</td>\n",
       "      <td>128</td>\n",
       "      <td>101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>104</td>\n",
       "      <td>139</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>77</td>\n",
       "      <td>63</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>61</td>\n",
       "      <td>20</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>35</td>\n",
       "      <td>51</td>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>119</td>\n",
       "      <td>44</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>89</td>\n",
       "      <td>3</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>137</td>\n",
       "      <td>83</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en\n",
       "0       20    84   13\n",
       "1       72   132  131\n",
       "2       80   128  101\n",
       "3      104   139   77\n",
       "4       77    63  138\n",
       "..     ...   ...  ...\n",
       "95      61    20   18\n",
       "96      35    51  121\n",
       "97     119    44   26\n",
       "98      89     3   30\n",
       "99     137    83   18\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,151,size = (100,3)),\n",
    "                 columns=['python','math','en'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "71a88717",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     不及格\n",
       "1      及格\n",
       "2      中等\n",
       "3      中等\n",
       "4      中等\n",
       "     ... \n",
       "95     及格\n",
       "96    不及格\n",
       "97     优秀\n",
       "98     中等\n",
       "99     优秀\n",
       "Name: python, Length: 100, dtype: category\n",
       "Categories (4, object): ['不及格' < '及格' < '中等' < '优秀']"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#等宽\n",
    "pd.cut(df.python,bins=4,#分成4份\n",
    "       labels=['不及格','及格','中等','优秀'],\n",
    "       right = True)#区间是闭区间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "ad77d9c5",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python</th>\n",
       "      <th>math</th>\n",
       "      <th>en</th>\n",
       "      <th>等级</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "      <td>84</td>\n",
       "      <td>13</td>\n",
       "      <td>极差</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>72</td>\n",
       "      <td>132</td>\n",
       "      <td>131</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>80</td>\n",
       "      <td>128</td>\n",
       "      <td>101</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>104</td>\n",
       "      <td>139</td>\n",
       "      <td>77</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>77</td>\n",
       "      <td>63</td>\n",
       "      <td>138</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>61</td>\n",
       "      <td>20</td>\n",
       "      <td>18</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>35</td>\n",
       "      <td>51</td>\n",
       "      <td>121</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>119</td>\n",
       "      <td>44</td>\n",
       "      <td>26</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>89</td>\n",
       "      <td>3</td>\n",
       "      <td>30</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>137</td>\n",
       "      <td>83</td>\n",
       "      <td>18</td>\n",
       "      <td>优秀</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    python  math   en   等级\n",
       "0       20    84   13   极差\n",
       "1       72   132  131   及格\n",
       "2       80   128  101   及格\n",
       "3      104   139   77   中等\n",
       "4       77    63  138   及格\n",
       "..     ...   ...  ...  ...\n",
       "95      61    20   18   及格\n",
       "96      35    51  121  不及格\n",
       "97     119    44   26   中等\n",
       "98      89     3   30   及格\n",
       "99     137    83   18   优秀\n",
       "\n",
       "[100 rows x 4 columns]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['等级'] = pd.cut(df.python,\n",
    "       bins = [0,30,60,90,120,150],\n",
    "      labels=['极差','不及格','及格','中等','优秀'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "387ed94e",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "极差     20\n",
       "不及格    20\n",
       "及格     20\n",
       "中等     20\n",
       "优秀     20\n",
       "Name: python, dtype: int64"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#等频\n",
    "pd.qcut(df.python,q = 5,labels=['极差','不及格','及格','中等','优秀']).value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56771aea",
   "metadata": {},
   "source": [
    "## 分组聚合"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "279a3a2f",
   "metadata": {},
   "source": [
    "### 分组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "9f1c4635",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>女</td>\n",
       "      <td>5</td>\n",
       "      <td>72</td>\n",
       "      <td>42</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>女</td>\n",
       "      <td>2</td>\n",
       "      <td>135</td>\n",
       "      <td>49</td>\n",
       "      <td>123</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>男</td>\n",
       "      <td>5</td>\n",
       "      <td>133</td>\n",
       "      <td>23</td>\n",
       "      <td>92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>女</td>\n",
       "      <td>3</td>\n",
       "      <td>112</td>\n",
       "      <td>52</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>女</td>\n",
       "      <td>8</td>\n",
       "      <td>65</td>\n",
       "      <td>34</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>男</td>\n",
       "      <td>7</td>\n",
       "      <td>86</td>\n",
       "      <td>2</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>男</td>\n",
       "      <td>2</td>\n",
       "      <td>71</td>\n",
       "      <td>105</td>\n",
       "      <td>130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>女</td>\n",
       "      <td>3</td>\n",
       "      <td>118</td>\n",
       "      <td>76</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>男</td>\n",
       "      <td>4</td>\n",
       "      <td>121</td>\n",
       "      <td>80</td>\n",
       "      <td>73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>女</td>\n",
       "      <td>2</td>\n",
       "      <td>133</td>\n",
       "      <td>115</td>\n",
       "      <td>87</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    sex  class  Python  Math   En\n",
       "0     女      5      72    42  138\n",
       "1     女      2     135    49  123\n",
       "2     男      5     133    23   92\n",
       "3     女      3     112    52   56\n",
       "4     女      8      65    34   80\n",
       "..   ..    ...     ...   ...  ...\n",
       "295   男      7      86     2   55\n",
       "296   男      2      71   105  130\n",
       "297   女      3     118    76   21\n",
       "298   男      4     121    80   73\n",
       "299   女      2     133   115   87\n",
       "\n",
       "[300 rows x 5 columns]"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data = {'sex':np.random.randint(0,2,size = 300), # 0男，1⼥\n",
    "'class':np.random.randint(1,9,size = 300),#1~8⼋个班\n",
    "'Python':np.random.randint(0,151,size = 300),#Python成绩\n",
    "'Math':np.random.randint(0,151,size =300),#Keras成绩\n",
    "'En':np.random.randint(0,151,size=300)})\n",
    "df['sex'] = df['sex'].map({0:'男',1:'女'})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "10e70ac1",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "女\n",
      "    sex  class  Python  Math   En\n",
      "0     女      5      72    42  138\n",
      "1     女      2     135    49  123\n",
      "3     女      3     112    52   56\n",
      "4     女      8      65    34   80\n",
      "5     女      8      29    65   49\n",
      "..   ..    ...     ...   ...  ...\n",
      "291   女      3      78   142  141\n",
      "292   女      6      33    95   69\n",
      "294   女      6     143   109   16\n",
      "297   女      3     118    76   21\n",
      "299   女      2     133   115   87\n",
      "\n",
      "[146 rows x 5 columns]\n",
      "男\n",
      "    sex  class  Python  Math   En\n",
      "2     男      5     133    23   92\n",
      "6     男      7       5    98   39\n",
      "8     男      4      72   114  146\n",
      "10    男      5     104    83    5\n",
      "11    男      1       9   136   68\n",
      "..   ..    ...     ...   ...  ...\n",
      "286   男      4      67   110   84\n",
      "293   男      3     126    89    5\n",
      "295   男      7      86     2   55\n",
      "296   男      2      71   105  130\n",
      "298   男      4     121    80   73\n",
      "\n",
      "[154 rows x 5 columns]\n"
     ]
    }
   ],
   "source": [
    "for name,group in df.groupby(by = 'sex'):#单分组\n",
    "    print(name)\n",
    "    print(group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "fcd7ec4e",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('女', 1)\n",
      "    sex  class  Python  Math   En\n",
      "32    女      1      51   129  121\n",
      "33    女      1     122    12    5\n",
      "53    女      1      23   140   31\n",
      "55    女      1       1    70   62\n",
      "69    女      1     123     4   62\n",
      "79    女      1     149    65   48\n",
      "86    女      1     150     6  134\n",
      "92    女      1      90     4  119\n",
      "99    女      1     140    92   84\n",
      "102   女      1      52    93   24\n",
      "133   女      1      45   130  121\n",
      "152   女      1      59    46   28\n",
      "173   女      1      79    58  125\n",
      "186   女      1     138    22   53\n",
      "191   女      1       3    54   52\n",
      "192   女      1      62    98   94\n",
      "234   女      1      59    63  141\n",
      "285   女      1     139    40  140\n",
      "290   女      1      59    35   63\n",
      "('女', 2)\n",
      "    sex  class  Python  Math   En\n",
      "1     女      2     135    49  123\n",
      "7     女      2      34    15  136\n",
      "14    女      2     116   137  120\n",
      "40    女      2     144    90   74\n",
      "68    女      2      96    50  133\n",
      "78    女      2      51    27   69\n",
      "116   女      2     115   119  127\n",
      "201   女      2      56    57   21\n",
      "211   女      2     145    11   33\n",
      "215   女      2      45   106   95\n",
      "266   女      2      36    27  130\n",
      "299   女      2     133   115   87\n",
      "('女', 3)\n",
      "    sex  class  Python  Math   En\n",
      "3     女      3     112    52   56\n",
      "72    女      3      27   124   85\n",
      "73    女      3     138    77  123\n",
      "100   女      3     107    90   60\n",
      "128   女      3      54   132  135\n",
      "142   女      3      39     5    6\n",
      "153   女      3      89    16   54\n",
      "171   女      3     150   117    2\n",
      "194   女      3      88    73   92\n",
      "196   女      3      49   102    8\n",
      "229   女      3     124    44   48\n",
      "231   女      3      12   149   48\n",
      "248   女      3     115    25    3\n",
      "254   女      3      46    96   63\n",
      "256   女      3      91    42   46\n",
      "257   女      3      42   135   47\n",
      "270   女      3     121    58  109\n",
      "291   女      3      78   142  141\n",
      "297   女      3     118    76   21\n",
      "('女', 4)\n",
      "    sex  class  Python  Math   En\n",
      "9     女      4     131    92  107\n",
      "12    女      4      54   139   86\n",
      "29    女      4     117    82   89\n",
      "64    女      4      65    48   56\n",
      "95    女      4     118     7   58\n",
      "103   女      4       2    89   30\n",
      "145   女      4      82   101  136\n",
      "178   女      4     142   118  108\n",
      "188   女      4     107   118   70\n",
      "197   女      4     102    33   84\n",
      "227   女      4      96    72    8\n",
      "240   女      4     145    57   55\n",
      "247   女      4     137    17   52\n",
      "273   女      4      38    74   88\n",
      "282   女      4      55    54   82\n",
      "('女', 5)\n",
      "    sex  class  Python  Math   En\n",
      "0     女      5      72    42  138\n",
      "18    女      5     117   115   60\n",
      "41    女      5     120   137  138\n",
      "45    女      5     145     6   75\n",
      "57    女      5     138   125  150\n",
      "59    女      5      15    64   31\n",
      "74    女      5      46   112   92\n",
      "108   女      5     116   141    6\n",
      "140   女      5      12    66   45\n",
      "164   女      5     130    76  121\n",
      "170   女      5      51    21  134\n",
      "172   女      5      96    71  100\n",
      "226   女      5     130    12   36\n",
      "243   女      5      28   148   74\n",
      "258   女      5     143    46   95\n",
      "275   女      5      66    36   34\n",
      "278   女      5     108    93   93\n",
      "279   女      5      42    96   89\n",
      "280   女      5     131   113   15\n",
      "('女', 6)\n",
      "    sex  class  Python  Math   En\n",
      "19    女      6      29   136  101\n",
      "21    女      6     124   139   49\n",
      "27    女      6      39   111   65\n",
      "48    女      6      53    17  129\n",
      "52    女      6     114    36   10\n",
      "58    女      6     139    91   24\n",
      "85    女      6      38    32  121\n",
      "94    女      6      26   150  129\n",
      "111   女      6     111    13   29\n",
      "127   女      6     100    15   57\n",
      "129   女      6     123   135  131\n",
      "131   女      6      82    38   67\n",
      "132   女      6     102    23   57\n",
      "175   女      6     133    79   45\n",
      "183   女      6      69   134  109\n",
      "220   女      6      16   124  120\n",
      "271   女      6      54   124   55\n",
      "292   女      6      33    95   69\n",
      "294   女      6     143   109   16\n",
      "('女', 7)\n",
      "    sex  class  Python  Math   En\n",
      "34    女      7      34   121   92\n",
      "44    女      7      46   140   58\n",
      "62    女      7     106    83   48\n",
      "66    女      7      12    93   37\n",
      "89    女      7     142     6   96\n",
      "110   女      7      34   132   82\n",
      "117   女      7     113     4   14\n",
      "123   女      7     112   123  141\n",
      "135   女      7      32    63  109\n",
      "146   女      7      17    52   24\n",
      "163   女      7     125     5   86\n",
      "174   女      7      37    45   34\n",
      "179   女      7      48   106    8\n",
      "259   女      7      21    27   55\n",
      "268   女      7      98    29   94\n",
      "283   女      7     131   123    6\n",
      "('女', 8)\n",
      "    sex  class  Python  Math   En\n",
      "4     女      8      65    34   80\n",
      "5     女      8      29    65   49\n",
      "17    女      8     104    40   49\n",
      "36    女      8     119   110  141\n",
      "75    女      8       6     3  104\n",
      "80    女      8      76    60   82\n",
      "90    女      8     138    62   78\n",
      "96    女      8      81    14  131\n",
      "112   女      8      38   115   94\n",
      "118   女      8     143    18   40\n",
      "134   女      8      11    28   10\n",
      "149   女      8      13    79   94\n",
      "154   女      8      51    51   90\n",
      "155   女      8      93   146   83\n",
      "168   女      8      77    18  136\n",
      "187   女      8     148   133   39\n",
      "202   女      8      82   124   99\n",
      "206   女      8     135    83   64\n",
      "230   女      8      46    51  124\n",
      "232   女      8      78   100    0\n",
      "233   女      8     122    68  121\n",
      "238   女      8     111    94    3\n",
      "253   女      8     130   121    7\n",
      "260   女      8     114    97  105\n",
      "287   女      8     110   123   70\n",
      "288   女      8      49    30  120\n",
      "289   女      8     115    29   21\n",
      "('男', 1)\n",
      "    sex  class  Python  Math   En\n",
      "11    男      1       9   136   68\n",
      "23    男      1       4    48   38\n",
      "39    男      1     123    59  117\n",
      "56    男      1      12    61  147\n",
      "60    男      1      96    95   43\n",
      "87    男      1     107    62   62\n",
      "109   男      1      53    33   92\n",
      "121   男      1      97   126  147\n",
      "147   男      1     110    15   86\n",
      "150   男      1      94   149  140\n",
      "161   男      1      97     1   37\n",
      "199   男      1      14   119   15\n",
      "208   男      1      23    12  140\n",
      "224   男      1      89    31   19\n",
      "261   男      1      56    97   75\n",
      "('男', 2)\n",
      "    sex  class  Python  Math   En\n",
      "15    男      2      83   140  105\n",
      "16    男      2       9   145    6\n",
      "25    男      2      59   130  103\n",
      "61    男      2      92    53  102\n",
      "81    男      2     143   100  145\n",
      "83    男      2     126    52  112\n",
      "113   男      2      50   103  108\n",
      "122   男      2     148   128   67\n",
      "139   男      2     128   139   28\n",
      "158   男      2     128   113  115\n",
      "162   男      2      19   138   12\n",
      "184   男      2      53    29  134\n",
      "200   男      2      11    27   65\n",
      "213   男      2      40    47  144\n",
      "217   男      2     108   131   14\n",
      "228   男      2     113    39    0\n",
      "246   男      2     112    52   91\n",
      "251   男      2     114    33  117\n",
      "272   男      2      76   141  114\n",
      "274   男      2     102    53   66\n",
      "296   男      2      71   105  130\n",
      "('男', 3)\n",
      "    sex  class  Python  Math   En\n",
      "35    男      3      39   112  121\n",
      "47    男      3     105   118   86\n",
      "54    男      3      85    67  140\n",
      "84    男      3     121    85   91\n",
      "104   男      3       1   129  123\n",
      "114   男      3     100    80   69\n",
      "124   男      3     120    35   84\n",
      "125   男      3     134    91   22\n",
      "151   男      3       8    77   60\n",
      "157   男      3      38    66  114\n",
      "165   男      3      14   129  101\n",
      "177   男      3      82    39   64\n",
      "185   男      3     131   116   23\n",
      "193   男      3      89   109   43\n",
      "198   男      3     131   135   48\n",
      "221   男      3     129    47   52\n",
      "242   男      3      17    55   58\n",
      "245   男      3     145    11  100\n",
      "249   男      3     120    34    4\n",
      "255   男      3      52    84   45\n",
      "265   男      3       9    69   33\n",
      "277   男      3      81    12    6\n",
      "293   男      3     126    89    5\n",
      "('男', 4)\n",
      "    sex  class  Python  Math   En\n",
      "8     男      4      72   114  146\n",
      "20    男      4      24   149   32\n",
      "22    男      4     107    38  145\n",
      "28    男      4       5    73  104\n",
      "70    男      4      80    69   66\n",
      "77    男      4      82    40  128\n",
      "91    男      4     103   148  113\n",
      "98    男      4      16    38  114\n",
      "107   男      4      67   118   22\n",
      "136   男      4      21   120   50\n",
      "141   男      4      79    27   19\n",
      "160   男      4     118   102  108\n",
      "210   男      4     111    14   94\n",
      "214   男      4      30   126   87\n",
      "219   男      4      62    13   27\n",
      "244   男      4      62   111  112\n",
      "284   男      4      71    36   20\n",
      "286   男      4      67   110   84\n",
      "298   男      4     121    80   73\n",
      "('男', 5)\n",
      "    sex  class  Python  Math   En\n",
      "2     男      5     133    23   92\n",
      "10    男      5     104    83    5\n",
      "30    男      5     123     2   98\n",
      "42    男      5      42   145   24\n",
      "43    男      5      52    76   91\n",
      "49    男      5      82    30  125\n",
      "50    男      5     116    61   66\n",
      "51    男      5     114   119   20\n",
      "82    男      5     150   134   67\n",
      "88    男      5      31   118   77\n",
      "93    男      5      45    14    6\n",
      "97    男      5      51   101   56\n",
      "120   男      5     146   132  138\n",
      "148   男      5     122    47   73\n",
      "156   男      5      37   114   88\n",
      "176   男      5      44    10   32\n",
      "181   男      5      25   132  150\n",
      "195   男      5      72    99    7\n",
      "204   男      5       3    90   41\n",
      "207   男      5     129   110   24\n",
      "218   男      5      71   142  111\n",
      "236   男      5      45    72  132\n",
      "252   男      5      68    45  107\n",
      "263   男      5      22    69   77\n",
      "267   男      5     129   138  124\n",
      "('男', 6)\n",
      "    sex  class  Python  Math   En\n",
      "24    男      6      65    59  136\n",
      "26    男      6     123    58   45\n",
      "37    男      6      70    76  109\n",
      "106   男      6     141    81  104\n",
      "115   男      6      69    61   67\n",
      "130   男      6     122   135   15\n",
      "138   男      6     111    74   51\n",
      "144   男      6     105   148  112\n",
      "167   男      6     126   130  121\n",
      "180   男      6      90   121   48\n",
      "190   男      6      48    51   69\n",
      "203   男      6     148    41   63\n",
      "205   男      6      67   145   34\n",
      "223   男      6     126    42    9\n",
      "237   男      6     145    89   73\n",
      "241   男      6      13   120  137\n",
      "262   男      6       5    30  126\n",
      "264   男      6     118    78  111\n",
      "('男', 7)\n",
      "    sex  class  Python  Math   En\n",
      "6     男      7       5    98   39\n",
      "31    男      7       5    88   44\n",
      "38    男      7      67    18   55\n",
      "46    男      7      33     6   59\n",
      "65    男      7       2    48  139\n",
      "67    男      7     139    21   71\n",
      "71    男      7      59    18   22\n",
      "101   男      7      10    34   10\n",
      "143   男      7      37    60   85\n",
      "159   男      7      69    61   59\n",
      "189   男      7     121    93   92\n",
      "209   男      7     112   130  127\n",
      "225   男      7     120    17   26\n",
      "235   男      7     136    48  142\n",
      "239   男      7     138    83   35\n",
      "250   男      7       4    34   54\n",
      "269   男      7      45     9  142\n",
      "276   男      7       8   100   88\n",
      "281   男      7      56   103   55\n",
      "295   男      7      86     2   55\n",
      "('男', 8)\n",
      "    sex  class  Python  Math   En\n",
      "13    男      8      57    50   42\n",
      "63    男      8      95   141  150\n",
      "76    男      8     114   139  127\n",
      "105   男      8     128    81  140\n",
      "119   男      8      66    79   15\n",
      "126   男      8      53    83   25\n",
      "137   男      8       8     2  142\n",
      "166   男      8      90   117   55\n",
      "169   男      8      32   105  109\n",
      "182   男      8      93     7   10\n",
      "212   男      8      15     0   58\n",
      "216   男      8     143    55   48\n",
      "222   男      8     125   145    6\n"
     ]
    }
   ],
   "source": [
    "for name,group in groupby(by=['sex','class']):#多分组，性别2，class 8=16\n",
    "    print(name)\n",
    "    print(group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "3c0b7c63",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "女      Python  Math\n",
      "0        72    42\n",
      "1       135    49\n",
      "3       112    52\n",
      "4        65    34\n",
      "5        29    65\n",
      "..      ...   ...\n",
      "291      78   142\n",
      "292      33    95\n",
      "294     143   109\n",
      "297     118    76\n",
      "299     133   115\n",
      "\n",
      "[146 rows x 2 columns]\n",
      "男      Python  Math\n",
      "2       133    23\n",
      "6         5    98\n",
      "8        72   114\n",
      "10      104    83\n",
      "11        9   136\n",
      "..      ...   ...\n",
      "286      67   110\n",
      "293     126    89\n",
      "295      86     2\n",
      "296      71   105\n",
      "298     121    80\n",
      "\n",
      "[154 rows x 2 columns]\n"
     ]
    }
   ],
   "source": [
    "for name,group in df[['Python','Math']].groupby(df['sex']):\n",
    "    print(name,group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "dc403b7e",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('女', 1)      Python  Math\n",
      "32       51   129\n",
      "33      122    12\n",
      "53       23   140\n",
      "55        1    70\n",
      "69      123     4\n",
      "79      149    65\n",
      "86      150     6\n",
      "92       90     4\n",
      "99      140    92\n",
      "102      52    93\n",
      "133      45   130\n",
      "152      59    46\n",
      "173      79    58\n",
      "186     138    22\n",
      "191       3    54\n",
      "192      62    98\n",
      "234      59    63\n",
      "285     139    40\n",
      "290      59    35\n",
      "('女', 2)      Python  Math\n",
      "1       135    49\n",
      "7        34    15\n",
      "14      116   137\n",
      "40      144    90\n",
      "68       96    50\n",
      "78       51    27\n",
      "116     115   119\n",
      "201      56    57\n",
      "211     145    11\n",
      "215      45   106\n",
      "266      36    27\n",
      "299     133   115\n",
      "('女', 3)      Python  Math\n",
      "3       112    52\n",
      "72       27   124\n",
      "73      138    77\n",
      "100     107    90\n",
      "128      54   132\n",
      "142      39     5\n",
      "153      89    16\n",
      "171     150   117\n",
      "194      88    73\n",
      "196      49   102\n",
      "229     124    44\n",
      "231      12   149\n",
      "248     115    25\n",
      "254      46    96\n",
      "256      91    42\n",
      "257      42   135\n",
      "270     121    58\n",
      "291      78   142\n",
      "297     118    76\n",
      "('女', 4)      Python  Math\n",
      "9       131    92\n",
      "12       54   139\n",
      "29      117    82\n",
      "64       65    48\n",
      "95      118     7\n",
      "103       2    89\n",
      "145      82   101\n",
      "178     142   118\n",
      "188     107   118\n",
      "197     102    33\n",
      "227      96    72\n",
      "240     145    57\n",
      "247     137    17\n",
      "273      38    74\n",
      "282      55    54\n",
      "('女', 5)      Python  Math\n",
      "0        72    42\n",
      "18      117   115\n",
      "41      120   137\n",
      "45      145     6\n",
      "57      138   125\n",
      "59       15    64\n",
      "74       46   112\n",
      "108     116   141\n",
      "140      12    66\n",
      "164     130    76\n",
      "170      51    21\n",
      "172      96    71\n",
      "226     130    12\n",
      "243      28   148\n",
      "258     143    46\n",
      "275      66    36\n",
      "278     108    93\n",
      "279      42    96\n",
      "280     131   113\n",
      "('女', 6)      Python  Math\n",
      "19       29   136\n",
      "21      124   139\n",
      "27       39   111\n",
      "48       53    17\n",
      "52      114    36\n",
      "58      139    91\n",
      "85       38    32\n",
      "94       26   150\n",
      "111     111    13\n",
      "127     100    15\n",
      "129     123   135\n",
      "131      82    38\n",
      "132     102    23\n",
      "175     133    79\n",
      "183      69   134\n",
      "220      16   124\n",
      "271      54   124\n",
      "292      33    95\n",
      "294     143   109\n",
      "('女', 7)      Python  Math\n",
      "34       34   121\n",
      "44       46   140\n",
      "62      106    83\n",
      "66       12    93\n",
      "89      142     6\n",
      "110      34   132\n",
      "117     113     4\n",
      "123     112   123\n",
      "135      32    63\n",
      "146      17    52\n",
      "163     125     5\n",
      "174      37    45\n",
      "179      48   106\n",
      "259      21    27\n",
      "268      98    29\n",
      "283     131   123\n",
      "('女', 8)      Python  Math\n",
      "4        65    34\n",
      "5        29    65\n",
      "17      104    40\n",
      "36      119   110\n",
      "75        6     3\n",
      "80       76    60\n",
      "90      138    62\n",
      "96       81    14\n",
      "112      38   115\n",
      "118     143    18\n",
      "134      11    28\n",
      "149      13    79\n",
      "154      51    51\n",
      "155      93   146\n",
      "168      77    18\n",
      "187     148   133\n",
      "202      82   124\n",
      "206     135    83\n",
      "230      46    51\n",
      "232      78   100\n",
      "233     122    68\n",
      "238     111    94\n",
      "253     130   121\n",
      "260     114    97\n",
      "287     110   123\n",
      "288      49    30\n",
      "289     115    29\n",
      "('男', 1)      Python  Math\n",
      "11        9   136\n",
      "23        4    48\n",
      "39      123    59\n",
      "56       12    61\n",
      "60       96    95\n",
      "87      107    62\n",
      "109      53    33\n",
      "121      97   126\n",
      "147     110    15\n",
      "150      94   149\n",
      "161      97     1\n",
      "199      14   119\n",
      "208      23    12\n",
      "224      89    31\n",
      "261      56    97\n",
      "('男', 2)      Python  Math\n",
      "15       83   140\n",
      "16        9   145\n",
      "25       59   130\n",
      "61       92    53\n",
      "81      143   100\n",
      "83      126    52\n",
      "113      50   103\n",
      "122     148   128\n",
      "139     128   139\n",
      "158     128   113\n",
      "162      19   138\n",
      "184      53    29\n",
      "200      11    27\n",
      "213      40    47\n",
      "217     108   131\n",
      "228     113    39\n",
      "246     112    52\n",
      "251     114    33\n",
      "272      76   141\n",
      "274     102    53\n",
      "296      71   105\n",
      "('男', 3)      Python  Math\n",
      "35       39   112\n",
      "47      105   118\n",
      "54       85    67\n",
      "84      121    85\n",
      "104       1   129\n",
      "114     100    80\n",
      "124     120    35\n",
      "125     134    91\n",
      "151       8    77\n",
      "157      38    66\n",
      "165      14   129\n",
      "177      82    39\n",
      "185     131   116\n",
      "193      89   109\n",
      "198     131   135\n",
      "221     129    47\n",
      "242      17    55\n",
      "245     145    11\n",
      "249     120    34\n",
      "255      52    84\n",
      "265       9    69\n",
      "277      81    12\n",
      "293     126    89\n",
      "('男', 4)      Python  Math\n",
      "8        72   114\n",
      "20       24   149\n",
      "22      107    38\n",
      "28        5    73\n",
      "70       80    69\n",
      "77       82    40\n",
      "91      103   148\n",
      "98       16    38\n",
      "107      67   118\n",
      "136      21   120\n",
      "141      79    27\n",
      "160     118   102\n",
      "210     111    14\n",
      "214      30   126\n",
      "219      62    13\n",
      "244      62   111\n",
      "284      71    36\n",
      "286      67   110\n",
      "298     121    80\n",
      "('男', 5)      Python  Math\n",
      "2       133    23\n",
      "10      104    83\n",
      "30      123     2\n",
      "42       42   145\n",
      "43       52    76\n",
      "49       82    30\n",
      "50      116    61\n",
      "51      114   119\n",
      "82      150   134\n",
      "88       31   118\n",
      "93       45    14\n",
      "97       51   101\n",
      "120     146   132\n",
      "148     122    47\n",
      "156      37   114\n",
      "176      44    10\n",
      "181      25   132\n",
      "195      72    99\n",
      "204       3    90\n",
      "207     129   110\n",
      "218      71   142\n",
      "236      45    72\n",
      "252      68    45\n",
      "263      22    69\n",
      "267     129   138\n",
      "('男', 6)      Python  Math\n",
      "24       65    59\n",
      "26      123    58\n",
      "37       70    76\n",
      "106     141    81\n",
      "115      69    61\n",
      "130     122   135\n",
      "138     111    74\n",
      "144     105   148\n",
      "167     126   130\n",
      "180      90   121\n",
      "190      48    51\n",
      "203     148    41\n",
      "205      67   145\n",
      "223     126    42\n",
      "237     145    89\n",
      "241      13   120\n",
      "262       5    30\n",
      "264     118    78\n",
      "('男', 7)      Python  Math\n",
      "6         5    98\n",
      "31        5    88\n",
      "38       67    18\n",
      "46       33     6\n",
      "65        2    48\n",
      "67      139    21\n",
      "71       59    18\n",
      "101      10    34\n",
      "143      37    60\n",
      "159      69    61\n",
      "189     121    93\n",
      "209     112   130\n",
      "225     120    17\n",
      "235     136    48\n",
      "239     138    83\n",
      "250       4    34\n",
      "269      45     9\n",
      "276       8   100\n",
      "281      56   103\n",
      "295      86     2\n",
      "('男', 8)      Python  Math\n",
      "13       57    50\n",
      "63       95   141\n",
      "76      114   139\n",
      "105     128    81\n",
      "119      66    79\n",
      "126      53    83\n",
      "137       8     2\n",
      "166      90   117\n",
      "169      32   105\n",
      "182      93     7\n",
      "212      15     0\n",
      "216     143    55\n",
      "222     125   145\n"
     ]
    }
   ],
   "source": [
    "for name,group in df[['Python','Math']].groupby([df['sex'],df['class']]):\n",
    "    print(name,group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "00e29797",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "int32      class  Python  Math   En\n",
      "0        5      72    42  138\n",
      "1        2     135    49  123\n",
      "2        5     133    23   92\n",
      "3        3     112    52   56\n",
      "4        8      65    34   80\n",
      "..     ...     ...   ...  ...\n",
      "295      7      86     2   55\n",
      "296      2      71   105  130\n",
      "297      3     118    76   21\n",
      "298      4     121    80   73\n",
      "299      2     133   115   87\n",
      "\n",
      "[300 rows x 4 columns]\n",
      "object     sex\n",
      "0     女\n",
      "1     女\n",
      "2     男\n",
      "3     女\n",
      "4     女\n",
      "..   ..\n",
      "295   男\n",
      "296   男\n",
      "297   女\n",
      "298   男\n",
      "299   女\n",
      "\n",
      "[300 rows x 1 columns]\n"
     ]
    }
   ],
   "source": [
    "for name,group in df.groupby(df.dtypes,axis=1):#根据数据类型进行分组\n",
    "    print(name,group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "03792fa5",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "category     sex  class\n",
      "0     女      5\n",
      "1     女      2\n",
      "2     男      5\n",
      "3     女      3\n",
      "4     女      8\n",
      "..   ..    ...\n",
      "295   男      7\n",
      "296   男      2\n",
      "297   女      3\n",
      "298   男      4\n",
      "299   女      2\n",
      "\n",
      "[300 rows x 2 columns]\n",
      "科目      Python  Math   En\n",
      "0        72    42  138\n",
      "1       135    49  123\n",
      "2       133    23   92\n",
      "3       112    52   56\n",
      "4        65    34   80\n",
      "..      ...   ...  ...\n",
      "295      86     2   55\n",
      "296      71   105  130\n",
      "297     118    76   21\n",
      "298     121    80   73\n",
      "299     133   115   87\n",
      "\n",
      "[300 rows x 3 columns]\n"
     ]
    }
   ],
   "source": [
    "m= {'sex':'category','class':'category','Python':'科目','Math':'科目','En':'科目'}\n",
    "for name,group in df.groupby(by = m,axis=1):\n",
    "    print(name,group)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d2ec938",
   "metadata": {},
   "source": [
    "### 分组聚合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "b2de559e",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>女</th>\n",
       "      <td>150</td>\n",
       "      <td>150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>男</th>\n",
       "      <td>150</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Python  Math\n",
       "sex              \n",
       "女       150   150\n",
       "男       150   149"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = 'sex')[['Python','Math']].max()#数学python根据性别分组，求解的最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "316109be",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>81.3</td>\n",
       "      <td>61.1</td>\n",
       "      <td>79.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>92.2</td>\n",
       "      <td>66.9</td>\n",
       "      <td>95.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84.2</td>\n",
       "      <td>81.8</td>\n",
       "      <td>60.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>92.7</td>\n",
       "      <td>73.4</td>\n",
       "      <td>73.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>89.8</td>\n",
       "      <td>80.0</td>\n",
       "      <td>80.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>80.4</td>\n",
       "      <td>84.3</td>\n",
       "      <td>72.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>69.2</td>\n",
       "      <td>72.0</td>\n",
       "      <td>61.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>84.6</td>\n",
       "      <td>70.2</td>\n",
       "      <td>75.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.6</td>\n",
       "      <td>69.6</td>\n",
       "      <td>81.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>85.0</td>\n",
       "      <td>90.4</td>\n",
       "      <td>84.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>81.6</td>\n",
       "      <td>77.8</td>\n",
       "      <td>64.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>68.3</td>\n",
       "      <td>80.3</td>\n",
       "      <td>81.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>78.2</td>\n",
       "      <td>84.2</td>\n",
       "      <td>73.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>94.0</td>\n",
       "      <td>85.5</td>\n",
       "      <td>79.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>62.6</td>\n",
       "      <td>53.6</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>78.4</td>\n",
       "      <td>77.2</td>\n",
       "      <td>71.3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Python  Math    En\n",
       "sex class                    \n",
       "女   1        81.3  61.1  79.3\n",
       "    2        92.2  66.9  95.7\n",
       "    3        84.2  81.8  60.4\n",
       "    4        92.7  73.4  73.9\n",
       "    5        89.8  80.0  80.3\n",
       "    6        80.4  84.3  72.8\n",
       "    7        69.2  72.0  61.5\n",
       "    8        84.6  70.2  75.3\n",
       "男   1        65.6  69.6  81.7\n",
       "    2        85.0  90.4  84.7\n",
       "    3        81.6  77.8  64.9\n",
       "    4        68.3  80.3  81.3\n",
       "    5        78.2  84.2  73.2\n",
       "    6        94.0  85.5  79.4\n",
       "    7        62.6  53.6  70.0\n",
       "    8        78.4  77.2  71.3"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex','class']).mean().round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "87024cd8",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sex  class\n",
       "女    1        19\n",
       "     2        12\n",
       "     3        19\n",
       "     4        15\n",
       "     5        19\n",
       "     6        19\n",
       "     7        16\n",
       "     8        27\n",
       "男    1        15\n",
       "     2        21\n",
       "     3        23\n",
       "     4        19\n",
       "     5        25\n",
       "     6        18\n",
       "     7        20\n",
       "     8        13\n",
       "dtype: int64"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex','class']).size()#统计各个班级男女人数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "ab622576",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"8\" halign=\"left\">Python</th>\n",
       "      <th colspan=\"5\" halign=\"left\">Math</th>\n",
       "      <th colspan=\"8\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>...</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>19.0</td>\n",
       "      <td>81.3</td>\n",
       "      <td>49.3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>51.5</td>\n",
       "      <td>62.0</td>\n",
       "      <td>130.5</td>\n",
       "      <td>150.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>61.1</td>\n",
       "      <td>...</td>\n",
       "      <td>92.5</td>\n",
       "      <td>140.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>79.3</td>\n",
       "      <td>43.9</td>\n",
       "      <td>5.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>63.0</td>\n",
       "      <td>121.0</td>\n",
       "      <td>141.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>12.0</td>\n",
       "      <td>92.2</td>\n",
       "      <td>44.6</td>\n",
       "      <td>34.0</td>\n",
       "      <td>49.5</td>\n",
       "      <td>105.5</td>\n",
       "      <td>133.5</td>\n",
       "      <td>145.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>66.9</td>\n",
       "      <td>...</td>\n",
       "      <td>108.2</td>\n",
       "      <td>137.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>95.7</td>\n",
       "      <td>39.6</td>\n",
       "      <td>21.0</td>\n",
       "      <td>72.8</td>\n",
       "      <td>107.5</td>\n",
       "      <td>127.8</td>\n",
       "      <td>136.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>19.0</td>\n",
       "      <td>84.2</td>\n",
       "      <td>40.5</td>\n",
       "      <td>12.0</td>\n",
       "      <td>47.5</td>\n",
       "      <td>89.0</td>\n",
       "      <td>116.5</td>\n",
       "      <td>150.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>81.8</td>\n",
       "      <td>...</td>\n",
       "      <td>120.5</td>\n",
       "      <td>149.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>60.4</td>\n",
       "      <td>43.9</td>\n",
       "      <td>2.0</td>\n",
       "      <td>33.5</td>\n",
       "      <td>54.0</td>\n",
       "      <td>88.5</td>\n",
       "      <td>141.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>15.0</td>\n",
       "      <td>92.7</td>\n",
       "      <td>42.4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>102.0</td>\n",
       "      <td>124.5</td>\n",
       "      <td>145.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>73.4</td>\n",
       "      <td>...</td>\n",
       "      <td>96.5</td>\n",
       "      <td>139.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>73.9</td>\n",
       "      <td>32.2</td>\n",
       "      <td>8.0</td>\n",
       "      <td>55.5</td>\n",
       "      <td>82.0</td>\n",
       "      <td>88.5</td>\n",
       "      <td>136.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>19.0</td>\n",
       "      <td>89.8</td>\n",
       "      <td>45.9</td>\n",
       "      <td>12.0</td>\n",
       "      <td>48.5</td>\n",
       "      <td>108.0</td>\n",
       "      <td>130.0</td>\n",
       "      <td>145.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>...</td>\n",
       "      <td>114.0</td>\n",
       "      <td>148.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>80.3</td>\n",
       "      <td>44.1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>40.5</td>\n",
       "      <td>89.0</td>\n",
       "      <td>110.5</td>\n",
       "      <td>150.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>19.0</td>\n",
       "      <td>80.4</td>\n",
       "      <td>43.4</td>\n",
       "      <td>16.0</td>\n",
       "      <td>38.5</td>\n",
       "      <td>82.0</td>\n",
       "      <td>118.5</td>\n",
       "      <td>143.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>84.3</td>\n",
       "      <td>...</td>\n",
       "      <td>129.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>72.8</td>\n",
       "      <td>40.9</td>\n",
       "      <td>10.0</td>\n",
       "      <td>47.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>114.5</td>\n",
       "      <td>131.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>16.0</td>\n",
       "      <td>69.2</td>\n",
       "      <td>46.5</td>\n",
       "      <td>12.0</td>\n",
       "      <td>33.5</td>\n",
       "      <td>47.0</td>\n",
       "      <td>112.2</td>\n",
       "      <td>142.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>72.0</td>\n",
       "      <td>...</td>\n",
       "      <td>121.5</td>\n",
       "      <td>140.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>61.5</td>\n",
       "      <td>40.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>31.5</td>\n",
       "      <td>56.5</td>\n",
       "      <td>92.5</td>\n",
       "      <td>141.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>27.0</td>\n",
       "      <td>84.6</td>\n",
       "      <td>42.7</td>\n",
       "      <td>6.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>82.0</td>\n",
       "      <td>117.0</td>\n",
       "      <td>148.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>70.2</td>\n",
       "      <td>...</td>\n",
       "      <td>105.0</td>\n",
       "      <td>146.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>75.3</td>\n",
       "      <td>42.9</td>\n",
       "      <td>0.0</td>\n",
       "      <td>44.5</td>\n",
       "      <td>82.0</td>\n",
       "      <td>104.5</td>\n",
       "      <td>141.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>15.0</td>\n",
       "      <td>65.6</td>\n",
       "      <td>43.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>18.5</td>\n",
       "      <td>89.0</td>\n",
       "      <td>97.0</td>\n",
       "      <td>123.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>69.6</td>\n",
       "      <td>...</td>\n",
       "      <td>108.0</td>\n",
       "      <td>149.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>81.7</td>\n",
       "      <td>47.1</td>\n",
       "      <td>15.0</td>\n",
       "      <td>40.5</td>\n",
       "      <td>75.0</td>\n",
       "      <td>128.5</td>\n",
       "      <td>147.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>21.0</td>\n",
       "      <td>85.0</td>\n",
       "      <td>42.9</td>\n",
       "      <td>9.0</td>\n",
       "      <td>53.0</td>\n",
       "      <td>92.0</td>\n",
       "      <td>114.0</td>\n",
       "      <td>148.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>90.4</td>\n",
       "      <td>...</td>\n",
       "      <td>131.0</td>\n",
       "      <td>145.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>84.7</td>\n",
       "      <td>47.3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>103.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>145.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>23.0</td>\n",
       "      <td>81.6</td>\n",
       "      <td>48.5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.5</td>\n",
       "      <td>89.0</td>\n",
       "      <td>123.5</td>\n",
       "      <td>145.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>77.8</td>\n",
       "      <td>...</td>\n",
       "      <td>110.5</td>\n",
       "      <td>135.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>64.9</td>\n",
       "      <td>40.1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>95.5</td>\n",
       "      <td>140.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>19.0</td>\n",
       "      <td>68.3</td>\n",
       "      <td>35.5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>71.0</td>\n",
       "      <td>92.5</td>\n",
       "      <td>121.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>80.3</td>\n",
       "      <td>...</td>\n",
       "      <td>116.0</td>\n",
       "      <td>149.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>81.3</td>\n",
       "      <td>42.6</td>\n",
       "      <td>19.0</td>\n",
       "      <td>41.0</td>\n",
       "      <td>87.0</td>\n",
       "      <td>112.5</td>\n",
       "      <td>146.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>25.0</td>\n",
       "      <td>78.2</td>\n",
       "      <td>44.3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>44.0</td>\n",
       "      <td>71.0</td>\n",
       "      <td>122.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>84.2</td>\n",
       "      <td>...</td>\n",
       "      <td>119.0</td>\n",
       "      <td>145.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>73.2</td>\n",
       "      <td>44.4</td>\n",
       "      <td>5.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>77.0</td>\n",
       "      <td>107.0</td>\n",
       "      <td>150.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>18.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>43.2</td>\n",
       "      <td>5.0</td>\n",
       "      <td>67.5</td>\n",
       "      <td>108.0</td>\n",
       "      <td>125.2</td>\n",
       "      <td>148.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>85.5</td>\n",
       "      <td>...</td>\n",
       "      <td>120.8</td>\n",
       "      <td>148.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>79.4</td>\n",
       "      <td>41.1</td>\n",
       "      <td>9.0</td>\n",
       "      <td>48.8</td>\n",
       "      <td>71.0</td>\n",
       "      <td>111.8</td>\n",
       "      <td>137.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>20.0</td>\n",
       "      <td>62.6</td>\n",
       "      <td>50.3</td>\n",
       "      <td>2.0</td>\n",
       "      <td>9.5</td>\n",
       "      <td>57.5</td>\n",
       "      <td>114.0</td>\n",
       "      <td>139.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>53.6</td>\n",
       "      <td>...</td>\n",
       "      <td>89.2</td>\n",
       "      <td>130.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>40.6</td>\n",
       "      <td>10.0</td>\n",
       "      <td>42.8</td>\n",
       "      <td>57.0</td>\n",
       "      <td>89.0</td>\n",
       "      <td>142.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>13.0</td>\n",
       "      <td>78.4</td>\n",
       "      <td>43.9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>53.0</td>\n",
       "      <td>90.0</td>\n",
       "      <td>114.0</td>\n",
       "      <td>143.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>77.2</td>\n",
       "      <td>...</td>\n",
       "      <td>117.0</td>\n",
       "      <td>145.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>71.3</td>\n",
       "      <td>54.5</td>\n",
       "      <td>6.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>127.0</td>\n",
       "      <td>150.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>16 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python                                               Math        \\\n",
       "           count  mean   std   min   25%    50%    75%    max count  mean   \n",
       "sex class                                                                   \n",
       "女   1       19.0  81.3  49.3   1.0  51.5   62.0  130.5  150.0  19.0  61.1   \n",
       "    2       12.0  92.2  44.6  34.0  49.5  105.5  133.5  145.0  12.0  66.9   \n",
       "    3       19.0  84.2  40.5  12.0  47.5   89.0  116.5  150.0  19.0  81.8   \n",
       "    4       15.0  92.7  42.4   2.0  60.0  102.0  124.5  145.0  15.0  73.4   \n",
       "    5       19.0  89.8  45.9  12.0  48.5  108.0  130.0  145.0  19.0  80.0   \n",
       "    6       19.0  80.4  43.4  16.0  38.5   82.0  118.5  143.0  19.0  84.3   \n",
       "    7       16.0  69.2  46.5  12.0  33.5   47.0  112.2  142.0  16.0  72.0   \n",
       "    8       27.0  84.6  42.7   6.0  50.0   82.0  117.0  148.0  27.0  70.2   \n",
       "男   1       15.0  65.6  43.0   4.0  18.5   89.0   97.0  123.0  15.0  69.6   \n",
       "    2       21.0  85.0  42.9   9.0  53.0   92.0  114.0  148.0  21.0  90.4   \n",
       "    3       23.0  81.6  48.5   1.0  38.5   89.0  123.5  145.0  23.0  77.8   \n",
       "    4       19.0  68.3  35.5   5.0  46.0   71.0   92.5  121.0  19.0  80.3   \n",
       "    5       25.0  78.2  44.3   3.0  44.0   71.0  122.0  150.0  25.0  84.2   \n",
       "    6       18.0  94.0  43.2   5.0  67.5  108.0  125.2  148.0  18.0  85.5   \n",
       "    7       20.0  62.6  50.3   2.0   9.5   57.5  114.0  139.0  20.0  53.6   \n",
       "    8       13.0  78.4  43.9   8.0  53.0   90.0  114.0  143.0  13.0  77.2   \n",
       "\n",
       "           ...                  En                                        \\\n",
       "           ...    75%    max count  mean   std   min   25%    50%    75%   \n",
       "sex class  ...                                                             \n",
       "女   1      ...   92.5  140.0  19.0  79.3  43.9   5.0  50.0   63.0  121.0   \n",
       "    2      ...  108.2  137.0  12.0  95.7  39.6  21.0  72.8  107.5  127.8   \n",
       "    3      ...  120.5  149.0  19.0  60.4  43.9   2.0  33.5   54.0   88.5   \n",
       "    4      ...   96.5  139.0  15.0  73.9  32.2   8.0  55.5   82.0   88.5   \n",
       "    5      ...  114.0  148.0  19.0  80.3  44.1   6.0  40.5   89.0  110.5   \n",
       "    6      ...  129.0  150.0  19.0  72.8  40.9  10.0  47.0   65.0  114.5   \n",
       "    7      ...  121.5  140.0  16.0  61.5  40.0   6.0  31.5   56.5   92.5   \n",
       "    8      ...  105.0  146.0  27.0  75.3  42.9   0.0  44.5   82.0  104.5   \n",
       "男   1      ...  108.0  149.0  15.0  81.7  47.1  15.0  40.5   75.0  128.5   \n",
       "    2      ...  131.0  145.0  21.0  84.7  47.3   0.0  65.0  103.0  115.0   \n",
       "    3      ...  110.5  135.0  23.0  64.9  40.1   4.0  38.0   60.0   95.5   \n",
       "    4      ...  116.0  149.0  19.0  81.3  42.6  19.0  41.0   87.0  112.5   \n",
       "    5      ...  119.0  145.0  25.0  73.2  44.4   5.0  32.0   77.0  107.0   \n",
       "    6      ...  120.8  148.0  18.0  79.4  41.1   9.0  48.8   71.0  111.8   \n",
       "    7      ...   89.2  130.0  20.0  70.0  40.6  10.0  42.8   57.0   89.0   \n",
       "    8      ...  117.0  145.0  13.0  71.3  54.5   6.0  25.0   55.0  127.0   \n",
       "\n",
       "                  \n",
       "             max  \n",
       "sex class         \n",
       "女   1      141.0  \n",
       "    2      136.0  \n",
       "    3      141.0  \n",
       "    4      136.0  \n",
       "    5      150.0  \n",
       "    6      131.0  \n",
       "    7      141.0  \n",
       "    8      141.0  \n",
       "男   1      147.0  \n",
       "    2      145.0  \n",
       "    3      140.0  \n",
       "    4      146.0  \n",
       "    5      150.0  \n",
       "    6      137.0  \n",
       "    7      142.0  \n",
       "    8      150.0  \n",
       "\n",
       "[16 rows x 24 columns]"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex','class']).describe().round(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1bce7340",
   "metadata": {},
   "source": [
    "### 分组聚合apply、transform"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "aec5d749",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>81.3</td>\n",
       "      <td>79.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>92.2</td>\n",
       "      <td>95.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84.2</td>\n",
       "      <td>60.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>92.7</td>\n",
       "      <td>73.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>89.8</td>\n",
       "      <td>80.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>80.4</td>\n",
       "      <td>72.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>69.2</td>\n",
       "      <td>61.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>84.6</td>\n",
       "      <td>75.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.6</td>\n",
       "      <td>81.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>85.0</td>\n",
       "      <td>84.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>81.6</td>\n",
       "      <td>64.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>68.3</td>\n",
       "      <td>81.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>78.2</td>\n",
       "      <td>73.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>94.0</td>\n",
       "      <td>79.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>62.6</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>78.4</td>\n",
       "      <td>71.3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Python    En\n",
       "sex class              \n",
       "女   1        81.3  79.3\n",
       "    2        92.2  95.7\n",
       "    3        84.2  60.4\n",
       "    4        92.7  73.9\n",
       "    5        89.8  80.3\n",
       "    6        80.4  72.8\n",
       "    7        69.2  61.5\n",
       "    8        84.6  75.3\n",
       "男   1        65.6  81.7\n",
       "    2        85.0  84.7\n",
       "    3        81.6  64.9\n",
       "    4        68.3  81.3\n",
       "    5        78.2  73.2\n",
       "    6        94.0  79.4\n",
       "    7        62.6  70.0\n",
       "    8        78.4  71.3"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#apply聚合结果，数量变少\n",
    "df.groupby(by =['sex','class'])[['Python','En']].apply(np.mean).round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "e857b9b6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>89.8</td>\n",
       "      <td>80.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>92.2</td>\n",
       "      <td>95.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>78.2</td>\n",
       "      <td>73.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84.2</td>\n",
       "      <td>60.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>84.6</td>\n",
       "      <td>75.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>62.6</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>85.0</td>\n",
       "      <td>84.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>84.2</td>\n",
       "      <td>60.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>68.3</td>\n",
       "      <td>81.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>92.2</td>\n",
       "      <td>95.7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Python    En\n",
       "0      89.8  80.3\n",
       "1      92.2  95.7\n",
       "2      78.2  73.2\n",
       "3      84.2  60.4\n",
       "4      84.6  75.3\n",
       "..      ...   ...\n",
       "295    62.6  70.0\n",
       "296    85.0  84.7\n",
       "297    84.2  60.4\n",
       "298    68.3  81.3\n",
       "299    92.2  95.7\n",
       "\n",
       "[300 rows x 2 columns]"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#transform 计算，返回的结果，还是DataFrame长度\n",
    "df.groupby(by =['sex','class'])[['Python','En']].transform(np.mean).round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "c5b847f0",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>89.8</td>\n",
       "      <td>80.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>92.2</td>\n",
       "      <td>95.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>78.2</td>\n",
       "      <td>73.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84.2</td>\n",
       "      <td>60.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>84.6</td>\n",
       "      <td>75.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>62.6</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>85.0</td>\n",
       "      <td>84.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>84.2</td>\n",
       "      <td>60.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>68.3</td>\n",
       "      <td>81.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>92.2</td>\n",
       "      <td>95.7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Python    En\n",
       "0      89.8  80.3\n",
       "1      92.2  95.7\n",
       "2      78.2  73.2\n",
       "3      84.2  60.4\n",
       "4      84.6  75.3\n",
       "..      ...   ...\n",
       "295    62.6  70.0\n",
       "296    85.0  84.7\n",
       "297    84.2  60.4\n",
       "298    68.3  81.3\n",
       "299    92.2  95.7\n",
       "\n",
       "[300 rows x 2 columns]"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def _mean(x):#自己定义求平均值的方法\n",
    "    return np.round(x.mean(),1)\n",
    "df.groupby(by = ['sex','class'])[['Python','En']].transform(_mean)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f14f4ed4",
   "metadata": {},
   "source": [
    "### 分组聚合agg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "84585b89",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"3\" halign=\"left\">Python</th>\n",
       "      <th colspan=\"3\" halign=\"left\">Math</th>\n",
       "      <th colspan=\"3\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "      <th>amax</th>\n",
       "      <th>amin</th>\n",
       "      <th>mean</th>\n",
       "      <th>amax</th>\n",
       "      <th>amin</th>\n",
       "      <th>mean</th>\n",
       "      <th>amax</th>\n",
       "      <th>amin</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>81.3</td>\n",
       "      <td>150</td>\n",
       "      <td>1</td>\n",
       "      <td>61.1</td>\n",
       "      <td>140</td>\n",
       "      <td>4</td>\n",
       "      <td>79.3</td>\n",
       "      <td>141</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>92.2</td>\n",
       "      <td>145</td>\n",
       "      <td>34</td>\n",
       "      <td>66.9</td>\n",
       "      <td>137</td>\n",
       "      <td>11</td>\n",
       "      <td>95.7</td>\n",
       "      <td>136</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84.2</td>\n",
       "      <td>150</td>\n",
       "      <td>12</td>\n",
       "      <td>81.8</td>\n",
       "      <td>149</td>\n",
       "      <td>5</td>\n",
       "      <td>60.4</td>\n",
       "      <td>141</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>92.7</td>\n",
       "      <td>145</td>\n",
       "      <td>2</td>\n",
       "      <td>73.4</td>\n",
       "      <td>139</td>\n",
       "      <td>7</td>\n",
       "      <td>73.9</td>\n",
       "      <td>136</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>89.8</td>\n",
       "      <td>145</td>\n",
       "      <td>12</td>\n",
       "      <td>80.0</td>\n",
       "      <td>148</td>\n",
       "      <td>6</td>\n",
       "      <td>80.3</td>\n",
       "      <td>150</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>80.4</td>\n",
       "      <td>143</td>\n",
       "      <td>16</td>\n",
       "      <td>84.3</td>\n",
       "      <td>150</td>\n",
       "      <td>13</td>\n",
       "      <td>72.8</td>\n",
       "      <td>131</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>69.2</td>\n",
       "      <td>142</td>\n",
       "      <td>12</td>\n",
       "      <td>72.0</td>\n",
       "      <td>140</td>\n",
       "      <td>4</td>\n",
       "      <td>61.5</td>\n",
       "      <td>141</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>84.6</td>\n",
       "      <td>148</td>\n",
       "      <td>6</td>\n",
       "      <td>70.2</td>\n",
       "      <td>146</td>\n",
       "      <td>3</td>\n",
       "      <td>75.3</td>\n",
       "      <td>141</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.6</td>\n",
       "      <td>123</td>\n",
       "      <td>4</td>\n",
       "      <td>69.6</td>\n",
       "      <td>149</td>\n",
       "      <td>1</td>\n",
       "      <td>81.7</td>\n",
       "      <td>147</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>85.0</td>\n",
       "      <td>148</td>\n",
       "      <td>9</td>\n",
       "      <td>90.4</td>\n",
       "      <td>145</td>\n",
       "      <td>27</td>\n",
       "      <td>84.7</td>\n",
       "      <td>145</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>81.6</td>\n",
       "      <td>145</td>\n",
       "      <td>1</td>\n",
       "      <td>77.8</td>\n",
       "      <td>135</td>\n",
       "      <td>11</td>\n",
       "      <td>64.9</td>\n",
       "      <td>140</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>68.3</td>\n",
       "      <td>121</td>\n",
       "      <td>5</td>\n",
       "      <td>80.3</td>\n",
       "      <td>149</td>\n",
       "      <td>13</td>\n",
       "      <td>81.3</td>\n",
       "      <td>146</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>78.2</td>\n",
       "      <td>150</td>\n",
       "      <td>3</td>\n",
       "      <td>84.2</td>\n",
       "      <td>145</td>\n",
       "      <td>2</td>\n",
       "      <td>73.2</td>\n",
       "      <td>150</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>94.0</td>\n",
       "      <td>148</td>\n",
       "      <td>5</td>\n",
       "      <td>85.5</td>\n",
       "      <td>148</td>\n",
       "      <td>30</td>\n",
       "      <td>79.4</td>\n",
       "      <td>137</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>62.6</td>\n",
       "      <td>139</td>\n",
       "      <td>2</td>\n",
       "      <td>53.6</td>\n",
       "      <td>130</td>\n",
       "      <td>2</td>\n",
       "      <td>70.0</td>\n",
       "      <td>142</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>78.4</td>\n",
       "      <td>143</td>\n",
       "      <td>8</td>\n",
       "      <td>77.2</td>\n",
       "      <td>145</td>\n",
       "      <td>0</td>\n",
       "      <td>71.3</td>\n",
       "      <td>150</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python            Math              En          \n",
       "            mean amax amin  mean amax amin  mean amax amin\n",
       "sex class                                                 \n",
       "女   1       81.3  150    1  61.1  140    4  79.3  141    5\n",
       "    2       92.2  145   34  66.9  137   11  95.7  136   21\n",
       "    3       84.2  150   12  81.8  149    5  60.4  141    2\n",
       "    4       92.7  145    2  73.4  139    7  73.9  136    8\n",
       "    5       89.8  145   12  80.0  148    6  80.3  150    6\n",
       "    6       80.4  143   16  84.3  150   13  72.8  131   10\n",
       "    7       69.2  142   12  72.0  140    4  61.5  141    6\n",
       "    8       84.6  148    6  70.2  146    3  75.3  141    0\n",
       "男   1       65.6  123    4  69.6  149    1  81.7  147   15\n",
       "    2       85.0  148    9  90.4  145   27  84.7  145    0\n",
       "    3       81.6  145    1  77.8  135   11  64.9  140    4\n",
       "    4       68.3  121    5  80.3  149   13  81.3  146   19\n",
       "    5       78.2  150    3  84.2  145    2  73.2  150    5\n",
       "    6       94.0  148    5  85.5  148   30  79.4  137    9\n",
       "    7       62.6  139    2  53.6  130    2  70.0  142   10\n",
       "    8       78.4  143    8  77.2  145    0  71.3  150    6"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex','class']).agg([np.mean,np.max,np.min]).round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "eeaea50b",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"3\" halign=\"left\">Python</th>\n",
       "      <th colspan=\"3\" halign=\"left\">Math</th>\n",
       "      <th colspan=\"3\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>平均值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>最小值</th>\n",
       "      <th>平均值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>最小值</th>\n",
       "      <th>平均值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>最小值</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>81.3</td>\n",
       "      <td>150</td>\n",
       "      <td>1</td>\n",
       "      <td>61.1</td>\n",
       "      <td>140</td>\n",
       "      <td>4</td>\n",
       "      <td>79.3</td>\n",
       "      <td>141</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>92.2</td>\n",
       "      <td>145</td>\n",
       "      <td>34</td>\n",
       "      <td>66.9</td>\n",
       "      <td>137</td>\n",
       "      <td>11</td>\n",
       "      <td>95.7</td>\n",
       "      <td>136</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84.2</td>\n",
       "      <td>150</td>\n",
       "      <td>12</td>\n",
       "      <td>81.8</td>\n",
       "      <td>149</td>\n",
       "      <td>5</td>\n",
       "      <td>60.4</td>\n",
       "      <td>141</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>92.7</td>\n",
       "      <td>145</td>\n",
       "      <td>2</td>\n",
       "      <td>73.4</td>\n",
       "      <td>139</td>\n",
       "      <td>7</td>\n",
       "      <td>73.9</td>\n",
       "      <td>136</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>89.8</td>\n",
       "      <td>145</td>\n",
       "      <td>12</td>\n",
       "      <td>80.0</td>\n",
       "      <td>148</td>\n",
       "      <td>6</td>\n",
       "      <td>80.3</td>\n",
       "      <td>150</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>80.4</td>\n",
       "      <td>143</td>\n",
       "      <td>16</td>\n",
       "      <td>84.3</td>\n",
       "      <td>150</td>\n",
       "      <td>13</td>\n",
       "      <td>72.8</td>\n",
       "      <td>131</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>69.2</td>\n",
       "      <td>142</td>\n",
       "      <td>12</td>\n",
       "      <td>72.0</td>\n",
       "      <td>140</td>\n",
       "      <td>4</td>\n",
       "      <td>61.5</td>\n",
       "      <td>141</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>84.6</td>\n",
       "      <td>148</td>\n",
       "      <td>6</td>\n",
       "      <td>70.2</td>\n",
       "      <td>146</td>\n",
       "      <td>3</td>\n",
       "      <td>75.3</td>\n",
       "      <td>141</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.6</td>\n",
       "      <td>123</td>\n",
       "      <td>4</td>\n",
       "      <td>69.6</td>\n",
       "      <td>149</td>\n",
       "      <td>1</td>\n",
       "      <td>81.7</td>\n",
       "      <td>147</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>85.0</td>\n",
       "      <td>148</td>\n",
       "      <td>9</td>\n",
       "      <td>90.4</td>\n",
       "      <td>145</td>\n",
       "      <td>27</td>\n",
       "      <td>84.7</td>\n",
       "      <td>145</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>81.6</td>\n",
       "      <td>145</td>\n",
       "      <td>1</td>\n",
       "      <td>77.8</td>\n",
       "      <td>135</td>\n",
       "      <td>11</td>\n",
       "      <td>64.9</td>\n",
       "      <td>140</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>68.3</td>\n",
       "      <td>121</td>\n",
       "      <td>5</td>\n",
       "      <td>80.3</td>\n",
       "      <td>149</td>\n",
       "      <td>13</td>\n",
       "      <td>81.3</td>\n",
       "      <td>146</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>78.2</td>\n",
       "      <td>150</td>\n",
       "      <td>3</td>\n",
       "      <td>84.2</td>\n",
       "      <td>145</td>\n",
       "      <td>2</td>\n",
       "      <td>73.2</td>\n",
       "      <td>150</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>94.0</td>\n",
       "      <td>148</td>\n",
       "      <td>5</td>\n",
       "      <td>85.5</td>\n",
       "      <td>148</td>\n",
       "      <td>30</td>\n",
       "      <td>79.4</td>\n",
       "      <td>137</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>62.6</td>\n",
       "      <td>139</td>\n",
       "      <td>2</td>\n",
       "      <td>53.6</td>\n",
       "      <td>130</td>\n",
       "      <td>2</td>\n",
       "      <td>70.0</td>\n",
       "      <td>142</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>78.4</td>\n",
       "      <td>143</td>\n",
       "      <td>8</td>\n",
       "      <td>77.2</td>\n",
       "      <td>145</td>\n",
       "      <td>0</td>\n",
       "      <td>71.3</td>\n",
       "      <td>150</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python           Math             En         \n",
       "             平均值  最大值 最小值   平均值  最大值 最小值   平均值  最大值 最小值\n",
       "sex class                                              \n",
       "女   1       81.3  150   1  61.1  140   4  79.3  141   5\n",
       "    2       92.2  145  34  66.9  137  11  95.7  136  21\n",
       "    3       84.2  150  12  81.8  149   5  60.4  141   2\n",
       "    4       92.7  145   2  73.4  139   7  73.9  136   8\n",
       "    5       89.8  145  12  80.0  148   6  80.3  150   6\n",
       "    6       80.4  143  16  84.3  150  13  72.8  131  10\n",
       "    7       69.2  142  12  72.0  140   4  61.5  141   6\n",
       "    8       84.6  148   6  70.2  146   3  75.3  141   0\n",
       "男   1       65.6  123   4  69.6  149   1  81.7  147  15\n",
       "    2       85.0  148   9  90.4  145  27  84.7  145   0\n",
       "    3       81.6  145   1  77.8  135  11  64.9  140   4\n",
       "    4       68.3  121   5  80.3  149  13  81.3  146  19\n",
       "    5       78.2  150   3  84.2  145   2  73.2  150   5\n",
       "    6       94.0  148   5  85.5  148  30  79.4  137   9\n",
       "    7       62.6  139   2  53.6  130   2  70.0  142  10\n",
       "    8       78.4  143   8  77.2  145   0  71.3  150   6"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex','class']).agg([('平均值',np.mean),('最大值',np.max),('最小值',np.min)]).round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "795cfc13",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>150</td>\n",
       "      <td>4</td>\n",
       "      <td>79.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>145</td>\n",
       "      <td>11</td>\n",
       "      <td>95.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>150</td>\n",
       "      <td>5</td>\n",
       "      <td>60.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>145</td>\n",
       "      <td>7</td>\n",
       "      <td>73.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>145</td>\n",
       "      <td>6</td>\n",
       "      <td>80.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>143</td>\n",
       "      <td>13</td>\n",
       "      <td>72.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>142</td>\n",
       "      <td>4</td>\n",
       "      <td>61.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>148</td>\n",
       "      <td>3</td>\n",
       "      <td>75.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>123</td>\n",
       "      <td>1</td>\n",
       "      <td>81.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>148</td>\n",
       "      <td>27</td>\n",
       "      <td>84.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>145</td>\n",
       "      <td>11</td>\n",
       "      <td>64.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>121</td>\n",
       "      <td>13</td>\n",
       "      <td>81.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>150</td>\n",
       "      <td>2</td>\n",
       "      <td>73.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>148</td>\n",
       "      <td>30</td>\n",
       "      <td>79.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>139</td>\n",
       "      <td>2</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>143</td>\n",
       "      <td>0</td>\n",
       "      <td>71.3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Python  Math    En\n",
       "sex class                    \n",
       "女   1         150     4  79.3\n",
       "    2         145    11  95.7\n",
       "    3         150     5  60.4\n",
       "    4         145     7  73.9\n",
       "    5         145     6  80.3\n",
       "    6         143    13  72.8\n",
       "    7         142     4  61.5\n",
       "    8         148     3  75.3\n",
       "男   1         123     1  81.7\n",
       "    2         148    27  84.7\n",
       "    3         145    11  64.9\n",
       "    4         121    13  81.3\n",
       "    5         150     2  73.2\n",
       "    6         148    30  79.4\n",
       "    7         139     2  70.0\n",
       "    8         143     0  71.3"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#三列执行了不同的操作\n",
    "df.groupby(by = ['sex','class']).agg({'Python':np.max,'Math':np.min,'En':np.mean}).round(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e29e6660",
   "metadata": {},
   "source": [
    "### 透视表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "ba43345c",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>En</th>\n",
       "      <th>Python</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>79.3</td>\n",
       "      <td>81.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>95.7</td>\n",
       "      <td>92.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60.4</td>\n",
       "      <td>84.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>73.9</td>\n",
       "      <td>92.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>80.3</td>\n",
       "      <td>89.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>72.8</td>\n",
       "      <td>80.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>61.5</td>\n",
       "      <td>69.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>75.3</td>\n",
       "      <td>84.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>81.7</td>\n",
       "      <td>65.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>84.7</td>\n",
       "      <td>85.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>64.9</td>\n",
       "      <td>81.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>81.3</td>\n",
       "      <td>68.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>73.2</td>\n",
       "      <td>78.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>79.4</td>\n",
       "      <td>94.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>70.0</td>\n",
       "      <td>62.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>71.3</td>\n",
       "      <td>78.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             En  Python\n",
       "sex class              \n",
       "女   1      79.3    81.3\n",
       "    2      95.7    92.2\n",
       "    3      60.4    84.2\n",
       "    4      73.9    92.7\n",
       "    5      80.3    89.8\n",
       "    6      72.8    80.4\n",
       "    7      61.5    69.2\n",
       "    8      75.3    84.6\n",
       "男   1      81.7    65.6\n",
       "    2      84.7    85.0\n",
       "    3      64.9    81.6\n",
       "    4      81.3    68.3\n",
       "    5      73.2    78.2\n",
       "    6      79.4    94.0\n",
       "    7      70.0    62.6\n",
       "    8      71.3    78.4"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.pivot_table(values=['Python','En'],index=['sex','class'],aggfunc='mean').round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "476d72e6",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"3\" halign=\"left\">En</th>\n",
       "      <th>Math</th>\n",
       "      <th>Python</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>方差</th>\n",
       "      <th>标准差</th>\n",
       "      <th>计数</th>\n",
       "      <th>最小值</th>\n",
       "      <th>平均值</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>1927.1</td>\n",
       "      <td>43.9</td>\n",
       "      <td>19.0</td>\n",
       "      <td>140</td>\n",
       "      <td>81.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1570.8</td>\n",
       "      <td>39.6</td>\n",
       "      <td>12.0</td>\n",
       "      <td>137</td>\n",
       "      <td>92.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1926.1</td>\n",
       "      <td>43.9</td>\n",
       "      <td>19.0</td>\n",
       "      <td>149</td>\n",
       "      <td>84.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1039.4</td>\n",
       "      <td>32.2</td>\n",
       "      <td>15.0</td>\n",
       "      <td>139</td>\n",
       "      <td>92.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1949.0</td>\n",
       "      <td>44.1</td>\n",
       "      <td>19.0</td>\n",
       "      <td>148</td>\n",
       "      <td>89.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1672.0</td>\n",
       "      <td>40.9</td>\n",
       "      <td>19.0</td>\n",
       "      <td>150</td>\n",
       "      <td>80.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1598.1</td>\n",
       "      <td>40.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>140</td>\n",
       "      <td>69.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1836.8</td>\n",
       "      <td>42.9</td>\n",
       "      <td>27.0</td>\n",
       "      <td>146</td>\n",
       "      <td>84.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>2221.6</td>\n",
       "      <td>47.1</td>\n",
       "      <td>15.0</td>\n",
       "      <td>149</td>\n",
       "      <td>65.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2237.3</td>\n",
       "      <td>47.3</td>\n",
       "      <td>21.0</td>\n",
       "      <td>145</td>\n",
       "      <td>85.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1608.9</td>\n",
       "      <td>40.1</td>\n",
       "      <td>23.0</td>\n",
       "      <td>135</td>\n",
       "      <td>81.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1816.0</td>\n",
       "      <td>42.6</td>\n",
       "      <td>19.0</td>\n",
       "      <td>149</td>\n",
       "      <td>68.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1969.4</td>\n",
       "      <td>44.4</td>\n",
       "      <td>25.0</td>\n",
       "      <td>145</td>\n",
       "      <td>78.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1687.0</td>\n",
       "      <td>41.1</td>\n",
       "      <td>18.0</td>\n",
       "      <td>148</td>\n",
       "      <td>94.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1646.7</td>\n",
       "      <td>40.6</td>\n",
       "      <td>20.0</td>\n",
       "      <td>130</td>\n",
       "      <td>62.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2967.9</td>\n",
       "      <td>54.5</td>\n",
       "      <td>13.0</td>\n",
       "      <td>145</td>\n",
       "      <td>78.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               En             Math Python\n",
       "               方差   标准差    计数  最小值    平均值\n",
       "sex class                                \n",
       "女   1      1927.1  43.9  19.0  140   81.3\n",
       "    2      1570.8  39.6  12.0  137   92.2\n",
       "    3      1926.1  43.9  19.0  149   84.2\n",
       "    4      1039.4  32.2  15.0  139   92.7\n",
       "    5      1949.0  44.1  19.0  148   89.8\n",
       "    6      1672.0  40.9  19.0  150   80.4\n",
       "    7      1598.1  40.0  16.0  140   69.2\n",
       "    8      1836.8  42.9  27.0  146   84.6\n",
       "男   1      2221.6  47.1  15.0  149   65.6\n",
       "    2      2237.3  47.3  21.0  145   85.0\n",
       "    3      1608.9  40.1  23.0  135   81.6\n",
       "    4      1816.0  42.6  19.0  149   68.3\n",
       "    5      1969.4  44.4  25.0  145   78.2\n",
       "    6      1687.0  41.1  18.0  148   94.0\n",
       "    7      1646.7  40.6  20.0  130   62.6\n",
       "    8      2967.9  54.5  13.0  145   78.4"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.pivot_table(values=['Python','Math','En'],#要透视值\n",
    "               index=['sex','class'],#索引，根据什么进行透视，==分组\n",
    "               aggfunc={'Python':[('平均值',np.mean)],\n",
    "                        'Math':[('最小值',np.max)],\n",
    "                        'En':[('标准差',np.std),('方差',np.var),('计数',np.size)]}).round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "003e1548",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th colspan=\"3\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>平均值</th>\n",
       "      <th>最小值</th>\n",
       "      <th>标准差</th>\n",
       "      <th>方差</th>\n",
       "      <th>计数</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>81.3</td>\n",
       "      <td>140</td>\n",
       "      <td>43.9</td>\n",
       "      <td>1927.1</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>92.2</td>\n",
       "      <td>137</td>\n",
       "      <td>39.6</td>\n",
       "      <td>1570.8</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84.2</td>\n",
       "      <td>149</td>\n",
       "      <td>43.9</td>\n",
       "      <td>1926.1</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>92.7</td>\n",
       "      <td>139</td>\n",
       "      <td>32.2</td>\n",
       "      <td>1039.4</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>89.8</td>\n",
       "      <td>148</td>\n",
       "      <td>44.1</td>\n",
       "      <td>1949.0</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>80.4</td>\n",
       "      <td>150</td>\n",
       "      <td>40.9</td>\n",
       "      <td>1672.0</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>69.2</td>\n",
       "      <td>140</td>\n",
       "      <td>40.0</td>\n",
       "      <td>1598.1</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>84.6</td>\n",
       "      <td>146</td>\n",
       "      <td>42.9</td>\n",
       "      <td>1836.8</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.6</td>\n",
       "      <td>149</td>\n",
       "      <td>47.1</td>\n",
       "      <td>2221.6</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>85.0</td>\n",
       "      <td>145</td>\n",
       "      <td>47.3</td>\n",
       "      <td>2237.3</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>81.6</td>\n",
       "      <td>135</td>\n",
       "      <td>40.1</td>\n",
       "      <td>1608.9</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>68.3</td>\n",
       "      <td>149</td>\n",
       "      <td>42.6</td>\n",
       "      <td>1816.0</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>78.2</td>\n",
       "      <td>145</td>\n",
       "      <td>44.4</td>\n",
       "      <td>1969.4</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>94.0</td>\n",
       "      <td>148</td>\n",
       "      <td>41.1</td>\n",
       "      <td>1687.0</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>62.6</td>\n",
       "      <td>130</td>\n",
       "      <td>40.6</td>\n",
       "      <td>1646.7</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>78.4</td>\n",
       "      <td>145</td>\n",
       "      <td>54.5</td>\n",
       "      <td>2967.9</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python Math    En            \n",
       "             平均值  最小值   标准差      方差  计数\n",
       "sex class                              \n",
       "女   1       81.3  140  43.9  1927.1  19\n",
       "    2       92.2  137  39.6  1570.8  12\n",
       "    3       84.2  149  43.9  1926.1  19\n",
       "    4       92.7  139  32.2  1039.4  15\n",
       "    5       89.8  148  44.1  1949.0  19\n",
       "    6       80.4  150  40.9  1672.0  19\n",
       "    7       69.2  140  40.0  1598.1  16\n",
       "    8       84.6  146  42.9  1836.8  27\n",
       "男   1       65.6  149  47.1  2221.6  15\n",
       "    2       85.0  145  47.3  2237.3  21\n",
       "    3       81.6  135  40.1  1608.9  23\n",
       "    4       68.3  149  42.6  1816.0  19\n",
       "    5       78.2  145  44.4  1969.4  25\n",
       "    6       94.0  148  41.1  1687.0  18\n",
       "    7       62.6  130  40.6  1646.7  20\n",
       "    8       78.4  145  54.5  2967.9  13"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by=['sex','class']).agg({'Python':[('平均值',np.mean)],\n",
    "                        'Math':[('最小值',np.max)],\n",
    "                        'En':[('标准差',np.std),('方差',np.var),('计数',np.size)]}).round(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b64ef86",
   "metadata": {},
   "source": [
    "## 时间序列"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b871f15b",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### 时间戳操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "94ecc8f0",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "be052b62",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2020-09-15 20:00:00')"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp('2020.09.15 20')#时刻数据，具体点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "2e2282b1",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2020-09', 'M')"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Period('2020.09.15',freq='M')#时期数据，表示一段时间，频率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "bd93bc52",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "index = pd.date_range('2020.09.15',freq='D',periods=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "9656323e",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2020-09-15', '2020-09-16', '2020-09-17', '2020-09-18',\n",
       "             '2020-09-19', '2020-09-20', '2020-09-21', '2020-09-22',\n",
       "             '2020-09-23', '2020-09-24'],\n",
       "            dtype='period[D]', freq='D')"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.period_range('2020.09.15',periods=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "794cca17",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    5\n",
       "2020-09-16    9\n",
       "2020-09-17    2\n",
       "2020-09-18    5\n",
       "2020-09-19    1\n",
       "2020-09-20    8\n",
       "2020-09-21    0\n",
       "2020-09-22    0\n",
       "2020-09-23    9\n",
       "2020-09-24    5\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts = pd.Series(np.random.randint(0,10,size =10),index=index)\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "4b058d95",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2020-09-15', '2020-09-15', '2020-09-15', '2020-09-15'], dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#时间戳的转换\n",
    "pd.to_datetime(['2020.09.15','2020-09-15','2020/09/15','15/09/2020'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0c518107",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1625625073.2601013"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import time\n",
    "time.time()#以秒为单位返回"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "3ed3a063",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2021-07-06 15:40:47')"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_datetime(1625586047,unit='s')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "fd7cceff",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('1970-01-19 19:33:06.047392200')"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt = pd.to_datetime(1625586047.3922,unit='ms')#世界标准时间\n",
    "dt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "88263b58",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('1970-01-20 03:33:06.047392200')"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt + pd.DateOffset(hours = 8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "453a9dd4",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\magicbook\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\IPython\\core\\interactiveshell.py:3441: UserWarning: Discarding nonzero nanoseconds in conversion\n",
      "  exec(code_obj, self.user_global_ns, self.user_ns)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Timestamp('1970-04-29 19:33:06.047392200')"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt + pd.DateOffset(days = 100)#一百天之后"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86fdfe74",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### 时间戳索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "3a26f920",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    135\n",
       "2020-09-16    225\n",
       "2020-09-17     14\n",
       "2020-09-18    174\n",
       "2020-09-19    292\n",
       "             ... \n",
       "2021-03-29    168\n",
       "2021-03-30    105\n",
       "2021-03-31    291\n",
       "2021-04-01     63\n",
       "2021-04-02    117\n",
       "Freq: D, Length: 200, dtype: int32"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts = pd.Series(np.random.randint(0,300,size=200),\n",
    "              index=pd.date_range('2020-09-15',freq='D',periods=200))\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "id": "159f8cb5",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "135"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#str字符串，进行索引\n",
    "ts['2020/09/15']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "68c23ccc",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    135\n",
       "2020-09-16    225\n",
       "2020-09-17     14\n",
       "2020-09-18    174\n",
       "2020-09-19    292\n",
       "2020-09-20    103\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['2020/09/15':'2020.09.20']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "9759e6e5",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    135\n",
       "2020-09-16    225\n",
       "2020-09-17     14\n",
       "2020-09-18    174\n",
       "2020-09-19    292\n",
       "2020-09-20    103\n",
       "2020-09-21    257\n",
       "2020-09-22     89\n",
       "2020-09-23     89\n",
       "2020-09-24    205\n",
       "2020-09-25      6\n",
       "2020-09-26    287\n",
       "2020-09-27    247\n",
       "2020-09-28      5\n",
       "2020-09-29     80\n",
       "2020-09-30    141\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['2020/09']#获取9月份的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "be535651",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    135\n",
       "2020-09-16    225\n",
       "2020-09-17     14\n",
       "2020-09-18    174\n",
       "2020-09-19    292\n",
       "             ... \n",
       "2020-12-27    250\n",
       "2020-12-28    293\n",
       "2020-12-29    172\n",
       "2020-12-30    112\n",
       "2020-12-31    176\n",
       "Freq: D, Length: 108, dtype: int32"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['2020']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "3a12cb51",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "135"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[pd.Timestamp('2020.09.15')]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "f43e7ecf",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    135\n",
       "2020-09-16    225\n",
       "2020-09-17     14\n",
       "2020-09-18    174\n",
       "2020-09-19    292\n",
       "2020-09-20    103\n",
       "2020-09-21    257\n",
       "2020-09-22     89\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[pd.Timestamp('2020.09.15'):pd.Timestamp('2020.09.22')]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "21f6c2d8",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    135\n",
       "2020-09-18    174\n",
       "2020-09-21    257\n",
       "2020-09-24    205\n",
       "2020-09-27    247\n",
       "             ... \n",
       "2021-03-20    168\n",
       "2021-03-23    231\n",
       "2021-03-26    279\n",
       "2021-03-29    168\n",
       "2021-04-01     63\n",
       "Freq: 3D, Length: 67, dtype: int32"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[pd.Timestamp('2020.09.15')::3]#有间隔的获取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "id": "6bbe9e88",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    135\n",
       "2020-09-16    225\n",
       "2020-09-17     14\n",
       "2020-09-18    174\n",
       "2020-09-19    292\n",
       "2020-09-20    103\n",
       "2020-09-21    257\n",
       "2020-09-22     89\n",
       "2020-09-23     89\n",
       "2020-09-24    205\n",
       "2020-09-25      6\n",
       "2020-09-26    287\n",
       "2020-09-27    247\n",
       "2020-09-28      5\n",
       "2020-09-29     80\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[pd.date_range('2020.09.15',freq='D',periods=15)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "id": "2dd68d01",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Int64Index([2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,\n",
       "            ...\n",
       "            2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021],\n",
       "           dtype='int64', length=200)"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.year"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "c68e8baf",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Int64Index([259, 260, 261, 262, 263, 264, 265, 266, 267, 268,\n",
       "            ...\n",
       "             83,  84,  85,  86,  87,  88,  89,  90,  91,  92],\n",
       "           dtype='int64', length=200)"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.dayofyear#20200915,对应着2020年第259天"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "88763d71",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "2c5f829e",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Int64Index([38, 38, 38, 38, 38, 38, 39, 39, 39, 39,\n",
       "            ...\n",
       "            12, 12, 12, 12, 12, 13, 13, 13, 13, 13],\n",
       "           dtype='int64', length=200)"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.weekofyear#对应一年中第多少周"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab9f59a3",
   "metadata": {},
   "source": [
    "### 时间序列常用操作"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "08380124",
   "metadata": {},
   "source": [
    "#### 数据移动"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c9a2958c",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-01    404\n",
       "2020-01-02    885\n",
       "2020-01-03    437\n",
       "2020-01-04    781\n",
       "2020-01-05    763\n",
       "             ... \n",
       "2020-12-26    343\n",
       "2020-12-27    747\n",
       "2020-12-28    833\n",
       "2020-12-29    139\n",
       "2020-12-30    867\n",
       "Freq: D, Length: 365, dtype: int32"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts =pd.Series(np.random.randint(0,1024,size=365),\n",
    "             index=pd.date_range('2020/1/1',freq='D',periods=365))\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f9b41454",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-01      NaN\n",
       "2020-01-02      NaN\n",
       "2020-01-03    404.0\n",
       "2020-01-04    885.0\n",
       "2020-01-05    437.0\n",
       "              ...  \n",
       "2020-12-26    161.0\n",
       "2020-12-27    449.0\n",
       "2020-12-28    343.0\n",
       "2020-12-29    747.0\n",
       "2020-12-30    833.0\n",
       "Freq: D, Length: 365, dtype: float64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(periods=2)#数据向后移动2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "70592157",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-01    437.0\n",
       "2020-01-02    781.0\n",
       "2020-01-03    763.0\n",
       "2020-01-04    100.0\n",
       "2020-01-05    582.0\n",
       "              ...  \n",
       "2020-12-26    833.0\n",
       "2020-12-27    139.0\n",
       "2020-12-28    867.0\n",
       "2020-12-29      NaN\n",
       "2020-12-30      NaN\n",
       "Freq: D, Length: 365, dtype: float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(periods=-2)#数据向前移动"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f02b8ea4",
   "metadata": {},
   "source": [
    "#### 时间移动"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e150579f",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-06    404\n",
       "2020-01-07    885\n",
       "2020-01-08    437\n",
       "2020-01-09    781\n",
       "2020-01-10    763\n",
       "             ... \n",
       "2020-12-31    343\n",
       "2021-01-01    747\n",
       "2021-01-02    833\n",
       "2021-01-03    139\n",
       "2021-01-04    867\n",
       "Freq: D, Length: 365, dtype: int32"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(periods=5,freq=pd.tseries.offsets.Day())#时间后移"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c4cd86a6",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2019-08-01    404\n",
       "2019-09-01    885\n",
       "2019-09-01    437\n",
       "2019-09-01    781\n",
       "2019-09-01    763\n",
       "             ... \n",
       "2020-08-01    343\n",
       "2020-08-01    747\n",
       "2020-08-01    833\n",
       "2020-08-01    139\n",
       "2020-08-01    867\n",
       "Length: 365, dtype: int32"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(periods=-5,freq=pd.tseries.offsets.MonthBegin())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ae1d8953",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "404"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['2020/01/01']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "180d718f",
   "metadata": {},
   "source": [
    "#### 频率转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "27be4e9f",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-31    820\n",
       "2020-02-29     61\n",
       "2020-03-31    182\n",
       "2020-04-30    877\n",
       "2020-05-31    446\n",
       "2020-06-30    428\n",
       "2020-07-31    364\n",
       "2020-08-31    640\n",
       "2020-09-30     40\n",
       "2020-10-31    605\n",
       "2020-11-30    473\n",
       "Freq: M, dtype: int32"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq(pd.tseries.offsets.MonthEnd())#365天，频率转变为月"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "14ecdf18",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-01     404\n",
       "2020-01-08     468\n",
       "2020-01-15     751\n",
       "2020-01-22     995\n",
       "2020-01-29     888\n",
       "2020-02-05     308\n",
       "2020-02-12     913\n",
       "2020-02-19     838\n",
       "2020-02-26      13\n",
       "2020-03-04     866\n",
       "2020-03-11     395\n",
       "2020-03-18     436\n",
       "2020-03-25     255\n",
       "2020-04-01      38\n",
       "2020-04-08     496\n",
       "2020-04-15     353\n",
       "2020-04-22     626\n",
       "2020-04-29     779\n",
       "2020-05-06     816\n",
       "2020-05-13     484\n",
       "2020-05-20     101\n",
       "2020-05-27     877\n",
       "2020-06-03     234\n",
       "2020-06-10     103\n",
       "2020-06-17     339\n",
       "2020-06-24     415\n",
       "2020-07-01     866\n",
       "2020-07-08     169\n",
       "2020-07-15     662\n",
       "2020-07-22     484\n",
       "2020-07-29     118\n",
       "2020-08-05     667\n",
       "2020-08-12     308\n",
       "2020-08-19     997\n",
       "2020-08-26    1023\n",
       "2020-09-02     465\n",
       "2020-09-09     969\n",
       "2020-09-16      87\n",
       "2020-09-23     498\n",
       "2020-09-30      40\n",
       "2020-10-07     794\n",
       "2020-10-14      71\n",
       "2020-10-21     721\n",
       "2020-10-28     563\n",
       "2020-11-04     661\n",
       "2020-11-11     150\n",
       "2020-11-18      95\n",
       "2020-11-25     232\n",
       "2020-12-02     241\n",
       "2020-12-09     194\n",
       "2020-12-16     406\n",
       "2020-12-23     689\n",
       "2020-12-30     867\n",
       "Freq: W, dtype: int32"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq(pd.tseries.offsets.Week())#转变成周"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f4975905",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-01 00:00:00    404\n",
       "2020-01-01 01:00:00      0\n",
       "2020-01-01 02:00:00      0\n",
       "2020-01-01 03:00:00      0\n",
       "2020-01-01 04:00:00      0\n",
       "                      ... \n",
       "2020-12-29 20:00:00      0\n",
       "2020-12-29 21:00:00      0\n",
       "2020-12-29 22:00:00      0\n",
       "2020-12-29 23:00:00      0\n",
       "2020-12-30 00:00:00    867\n",
       "Freq: H, Length: 8737, dtype: int32"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq(pd.tseries.offsets.Hour(),fill_value=0)#时间频率转化，从天变换为小时，空数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ce670e55",
   "metadata": {},
   "source": [
    "#### 重采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ea826e80",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-31    16450\n",
       "2020-02-29    12727\n",
       "2020-03-31    16192\n",
       "2020-04-30    14842\n",
       "2020-05-31    17660\n",
       "2020-06-30    15497\n",
       "2020-07-31    15351\n",
       "2020-08-31    17065\n",
       "2020-09-30    14890\n",
       "2020-10-31    15806\n",
       "2020-11-30    14279\n",
       "2020-12-31    14333\n",
       "Freq: M, dtype: int32"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#时间序列重采样和之前分组聚合是类似的\n",
    "ts.resample(rule='M').agg(np.sum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "766309a1",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-01-31     16450\n",
       "2020-04-30     60211\n",
       "2020-07-31    108719\n",
       "2020-10-31    156480\n",
       "2021-01-31    185092\n",
       "Freq: 3M, dtype: int32"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#重采样，按季度进行计算\n",
    "ts.resample(rule='3M').agg(np.sum).cumsum()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3903619",
   "metadata": {},
   "source": [
    "#### DataFrame 重采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "8a6d343c",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>volume</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>58</td>\n",
       "      <td>5</td>\n",
       "      <td>2020-09-15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>39</td>\n",
       "      <td>64</td>\n",
       "      <td>2020-09-16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>24</td>\n",
       "      <td>4</td>\n",
       "      <td>2020-09-17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>67</td>\n",
       "      <td>27</td>\n",
       "      <td>2020-09-18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>52</td>\n",
       "      <td>71</td>\n",
       "      <td>2020-09-19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>360</th>\n",
       "      <td>15</td>\n",
       "      <td>19</td>\n",
       "      <td>2021-09-10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>76</td>\n",
       "      <td>36</td>\n",
       "      <td>2021-09-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>92</td>\n",
       "      <td>48</td>\n",
       "      <td>2021-09-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>52</td>\n",
       "      <td>72</td>\n",
       "      <td>2021-09-13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>364</th>\n",
       "      <td>91</td>\n",
       "      <td>68</td>\n",
       "      <td>2021-09-14</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>365 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     price  volume       time\n",
       "0       58       5 2020-09-15\n",
       "1       39      64 2020-09-16\n",
       "2       24       4 2020-09-17\n",
       "3       67      27 2020-09-18\n",
       "4       52      71 2020-09-19\n",
       "..     ...     ...        ...\n",
       "360     15      19 2021-09-10\n",
       "361     76      36 2021-09-11\n",
       "362     92      48 2021-09-12\n",
       "363     52      72 2021-09-13\n",
       "364     91      68 2021-09-14\n",
       "\n",
       "[365 rows x 3 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data={'price':np.random.randint(0,100,size =365),\n",
    "                       'volume':np.random.randint(0,100,size =365),\n",
    "                       'time':pd.date_range('2020.09.15',periods=365)})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "12d345d8",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-09-30</th>\n",
       "      <td>875</td>\n",
       "      <td>717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-10-31</th>\n",
       "      <td>1201</td>\n",
       "      <td>1410</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-11-30</th>\n",
       "      <td>1350</td>\n",
       "      <td>1593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-31</th>\n",
       "      <td>1510</td>\n",
       "      <td>1642</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-01-31</th>\n",
       "      <td>1637</td>\n",
       "      <td>1276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-02-28</th>\n",
       "      <td>1268</td>\n",
       "      <td>1680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-03-31</th>\n",
       "      <td>1755</td>\n",
       "      <td>1593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-04-30</th>\n",
       "      <td>1669</td>\n",
       "      <td>1075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-05-31</th>\n",
       "      <td>1451</td>\n",
       "      <td>1510</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-06-30</th>\n",
       "      <td>1371</td>\n",
       "      <td>1450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-07-31</th>\n",
       "      <td>1524</td>\n",
       "      <td>1859</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-08-31</th>\n",
       "      <td>1491</td>\n",
       "      <td>1457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-09-30</th>\n",
       "      <td>729</td>\n",
       "      <td>636</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            price  volume\n",
       "time                     \n",
       "2020-09-30    875     717\n",
       "2020-10-31   1201    1410\n",
       "2020-11-30   1350    1593\n",
       "2020-12-31   1510    1642\n",
       "2021-01-31   1637    1276\n",
       "2021-02-28   1268    1680\n",
       "2021-03-31   1755    1593\n",
       "2021-04-30   1669    1075\n",
       "2021-05-31   1451    1510\n",
       "2021-06-30   1371    1450\n",
       "2021-07-31   1524    1859\n",
       "2021-08-31   1491    1457\n",
       "2021-09-30    729     636"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.resample(rule='M',on = 'time').sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "697e616f",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-09-30</th>\n",
       "      <td>875</td>\n",
       "      <td>717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-10-31</th>\n",
       "      <td>1201</td>\n",
       "      <td>1410</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-11-30</th>\n",
       "      <td>1350</td>\n",
       "      <td>1593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-31</th>\n",
       "      <td>1510</td>\n",
       "      <td>1642</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-01-31</th>\n",
       "      <td>1637</td>\n",
       "      <td>1276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-02-28</th>\n",
       "      <td>1268</td>\n",
       "      <td>1680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-03-31</th>\n",
       "      <td>1755</td>\n",
       "      <td>1593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-04-30</th>\n",
       "      <td>1669</td>\n",
       "      <td>1075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-05-31</th>\n",
       "      <td>1451</td>\n",
       "      <td>1510</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-06-30</th>\n",
       "      <td>1371</td>\n",
       "      <td>1450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-07-31</th>\n",
       "      <td>1524</td>\n",
       "      <td>1859</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-08-31</th>\n",
       "      <td>1491</td>\n",
       "      <td>1457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-09-30</th>\n",
       "      <td>729</td>\n",
       "      <td>636</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            price  volume\n",
       "time                     \n",
       "2020-09-30    875     717\n",
       "2020-10-31   1201    1410\n",
       "2020-11-30   1350    1593\n",
       "2020-12-31   1510    1642\n",
       "2021-01-31   1637    1276\n",
       "2021-02-28   1268    1680\n",
       "2021-03-31   1755    1593\n",
       "2021-04-30   1669    1075\n",
       "2021-05-31   1451    1510\n",
       "2021-06-30   1371    1450\n",
       "2021-07-31   1524    1859\n",
       "2021-08-31   1491    1457\n",
       "2021-09-30    729     636"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.resample(rule='M',on = 'time').apply(np.sum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "696d2088",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>875</td>\n",
       "      <td>717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>875</td>\n",
       "      <td>717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>875</td>\n",
       "      <td>717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>875</td>\n",
       "      <td>717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>875</td>\n",
       "      <td>717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>360</th>\n",
       "      <td>729</td>\n",
       "      <td>636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>729</td>\n",
       "      <td>636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>729</td>\n",
       "      <td>636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>729</td>\n",
       "      <td>636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>364</th>\n",
       "      <td>729</td>\n",
       "      <td>636</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>365 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     price  volume\n",
       "0      875     717\n",
       "1      875     717\n",
       "2      875     717\n",
       "3      875     717\n",
       "4      875     717\n",
       "..     ...     ...\n",
       "360    729     636\n",
       "361    729     636\n",
       "362    729     636\n",
       "363    729     636\n",
       "364    729     636\n",
       "\n",
       "[365 rows x 2 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.resample(rule = 'M',on = 'time').transform(np.sum)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a3f51255",
   "metadata": {},
   "source": [
    "## 数据可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a4315b6",
   "metadata": {},
   "source": [
    "### 线形图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "c8564a47",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df1 = pd.DataFrame(np.random.randn(1000,4),columns=list('ABCD'))\n",
    "df1.cumsum().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "f6b315a9",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df2 =pd.DataFrame(np.random.randn(10,4),columns=list('ABCD'))\n",
    "df2.plot.bar(stacked =True)#柱状图\n",
    "df2.plot.barh()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "8c5f73a9",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([<AxesSubplot:ylabel='one'>, <AxesSubplot:ylabel='two'>],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df3 = pd.DataFrame(np.random.rand(4,2),columns=['one','two'],index= list('ABCD'))\n",
    "\n",
    "df3['one'].plot.pie()\n",
    "df3.plot.pie(subplots = True,figsize = (10,10),autopct = '0.2f%%')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff2a8ff5",
   "metadata": {},
   "source": [
    "### 散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "cb362536",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='A', ylabel='B'>"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#表示两个属性之间的关系\n",
    "df4 = pd.DataFrame(np.random.randn(100,4),columns=list('ABCD'))\n",
    "df4.plot.scatter(x = 'A',y= 'B')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "5aaa9ae6",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='A', ylabel='C'>"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#一张图显示，A和C的关系，同时显示B和D的关系\n",
    "#返回值，视图\n",
    "ax = df4.plot.scatter(x= 'A',y= 'C',color='DarkBlue',label= 'Group1')\n",
    "\n",
    "#再次向ax中绘制图形\n",
    "df4.plot.scatter(x = 'A',y='C',color='DarkGreen',label = 'Group2',\n",
    "                 alpha = 0.5,#透明度\n",
    "                 s = np.random.randint(30,100,size = 100),#大小各不相同\n",
    "                ax = ax)#表示向子视图ax中继续进行绘制"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c291258d",
   "metadata": {},
   "source": [
    "### 面积图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "67c243b1",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df5 = pd.DataFrame(np.random.rand(10,4),columns=list('ABCD'))\n",
    "df5.plot.area(stacked =True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7253a426",
   "metadata": {},
   "source": [
    "### 箱式图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "ec0f7180",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#特殊的条形图，表示数据分布情况\n",
    "df6 = pd.DataFrame(np.random.randn(20,4),columns=list('ABCD'))\n",
    "df6.plot.box()#绿色线表示中位数，上四分之一，下四分之一,表示异常值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "6f4fe11d",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>20.00</td>\n",
       "      <td>20.00</td>\n",
       "      <td>20.00</td>\n",
       "      <td>20.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.09</td>\n",
       "      <td>-0.07</td>\n",
       "      <td>0.12</td>\n",
       "      <td>-0.17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.93</td>\n",
       "      <td>0.74</td>\n",
       "      <td>0.96</td>\n",
       "      <td>1.13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-1.06</td>\n",
       "      <td>-1.44</td>\n",
       "      <td>-1.34</td>\n",
       "      <td>-2.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-0.67</td>\n",
       "      <td>-0.66</td>\n",
       "      <td>-0.48</td>\n",
       "      <td>-0.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>-0.23</td>\n",
       "      <td>-0.06</td>\n",
       "      <td>-0.06</td>\n",
       "      <td>-0.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.56</td>\n",
       "      <td>0.56</td>\n",
       "      <td>0.40</td>\n",
       "      <td>0.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.19</td>\n",
       "      <td>1.24</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.81</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           A      B      C      D\n",
       "count  20.00  20.00  20.00  20.00\n",
       "mean    0.09  -0.07   0.12  -0.17\n",
       "std     0.93   0.74   0.96   1.13\n",
       "min    -1.06  -1.44  -1.34  -2.76\n",
       "25%    -0.67  -0.66  -0.48  -0.89\n",
       "50%    -0.23  -0.06  -0.06  -0.30\n",
       "75%     0.56   0.56   0.40   0.78\n",
       "max     2.19   1.24   2.42   1.81"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df6.describe().round(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7dac6b4",
   "metadata": {},
   "source": [
    "### 直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "7e108f9b",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:ylabel='Frequency'>"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#表示概率，分布，一种形式的条形图\n",
    "df7 = pd.DataFrame(data={'A':np.random.randn(1000) -2 ,\n",
    "                        'B':np.random.randn(1000),\n",
    "                        'C':np.random.randn(1000) +2})\n",
    "df7.plot.hist()\n",
    "df7.plot.hist(stacked =True,alpha =0.65)#堆叠效果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "963998d4",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<AxesSubplot:title={'center':'A'}>,\n",
       "        <AxesSubplot:title={'center':'B'}>],\n",
       "       [<AxesSubplot:title={'center':'C'}>, <AxesSubplot:>]], dtype=object)"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 648x648 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#子视图的直方图\n",
    "df7.hist(figsize=(9,9))#三个属性各绘制了直方图"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f2b5646",
   "metadata": {},
   "source": [
    "## 数据分析岗分析"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7119d99d",
   "metadata": {},
   "source": [
    "### 加载查看去重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "2876520f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "2345a8b2",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3683, 12)"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job = pd.read_csv('./lagou2020.csv')\n",
    "job.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "06a18b68",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>positionName</th>\n",
       "      <th>companyShortName</th>\n",
       "      <th>city</th>\n",
       "      <th>companySize</th>\n",
       "      <th>education</th>\n",
       "      <th>financeStage</th>\n",
       "      <th>industryField</th>\n",
       "      <th>salary</th>\n",
       "      <th>workYear</th>\n",
       "      <th>hitags</th>\n",
       "      <th>companyLabelList</th>\n",
       "      <th>job_detail</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>拉勾网</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>本科</td>\n",
       "      <td>D轮及以上</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>25k-35k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>[\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...</td>\n",
       "      <td>[\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]</td>\n",
       "      <td>\\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>数据分析师</td>\n",
       "      <td>OK Group</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>B轮</td>\n",
       "      <td>金融</td>\n",
       "      <td>25k-45k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]</td>\n",
       "      <td>\\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>数据分析师</td>\n",
       "      <td>京东集团</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>电商</td>\n",
       "      <td>15k-30k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>[\"免费班车\",\"免费体检\",\"地铁周边\"]</td>\n",
       "      <td>[\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]</td>\n",
       "      <td>\\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  positionName companyShortName city companySize education financeStage  \\\n",
       "0      高级数据分析师              拉勾网   北京   500-2000人        本科        D轮及以上   \n",
       "1        数据分析师         OK Group   北京   500-2000人        大专           B轮   \n",
       "2      高级数据分析师           金山办公软件   北京     2000人以上        本科         上市公司   \n",
       "3        数据分析师           金山办公软件   北京     2000人以上        本科         上市公司   \n",
       "4        数据分析师             京东集团   北京     2000人以上        本科         上市公司   \n",
       "\n",
       "  industryField   salary workYear  \\\n",
       "0          企业服务  25k-35k    5-10年   \n",
       "1            金融  25k-45k    5-10年   \n",
       "2         移动互联网  15k-25k     3-5年   \n",
       "3         移动互联网  15k-25k     1-3年   \n",
       "4            电商  15k-30k     3-5年   \n",
       "\n",
       "                                              hitags  \\\n",
       "0  [\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...   \n",
       "1                                                NaN   \n",
       "2                                                NaN   \n",
       "3                                                NaN   \n",
       "4                             [\"免费班车\",\"免费体检\",\"地铁周边\"]   \n",
       "\n",
       "                companyLabelList  \\\n",
       "0  [\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]   \n",
       "1   [\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]   \n",
       "2  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "3  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "4  [\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]   \n",
       "\n",
       "                                          job_detail  \n",
       "0  \\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...  \n",
       "1  \\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...  \n",
       "2  \\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...  \n",
       "3  \\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...  \n",
       "4  \\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...  "
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.head()#查看字段"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "85115441",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['北京', '上海', '深圳', '广州', '杭州', '成都', '南京', '武汉', '西安', '厦门', '长沙',\n",
       "       '苏州', '天津'], dtype=object)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.city.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "4cec5d9a",
   "metadata": {},
   "outputs": [],
   "source": [
    "job.drop_duplicates(inplace=True)#去重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "9e7f98a0",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3507, 12)"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "e85a7344",
   "metadata": {},
   "outputs": [],
   "source": [
    "job.reset_index(inplace = True)#行索引重置：0-最后，从0开始编号"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "a70bc010",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>positionName</th>\n",
       "      <th>companyShortName</th>\n",
       "      <th>city</th>\n",
       "      <th>companySize</th>\n",
       "      <th>education</th>\n",
       "      <th>financeStage</th>\n",
       "      <th>industryField</th>\n",
       "      <th>salary</th>\n",
       "      <th>workYear</th>\n",
       "      <th>hitags</th>\n",
       "      <th>companyLabelList</th>\n",
       "      <th>job_detail</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>拉勾网</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>本科</td>\n",
       "      <td>D轮及以上</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>25k-35k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>[\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...</td>\n",
       "      <td>[\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]</td>\n",
       "      <td>\\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>OK Group</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>B轮</td>\n",
       "      <td>金融</td>\n",
       "      <td>25k-45k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]</td>\n",
       "      <td>\\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>京东集团</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>电商</td>\n",
       "      <td>15k-30k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>[\"免费班车\",\"免费体检\",\"地铁周边\"]</td>\n",
       "      <td>[\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]</td>\n",
       "      <td>\\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3502</th>\n",
       "      <td>3678</td>\n",
       "      <td>内容运营高级经理-审核方向</td>\n",
       "      <td>字节跳动</td>\n",
       "      <td>天津</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>C轮</td>\n",
       "      <td>文娱丨内容</td>\n",
       "      <td>20k-30k</td>\n",
       "      <td>不限</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]</td>\n",
       "      <td>\\n        职位职责：\\n1、负责字节跳动旗下产品图文类及小视频类内容的业务管理，对...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3503</th>\n",
       "      <td>3679</td>\n",
       "      <td>质检岗位基层管理岗</td>\n",
       "      <td>字节跳动</td>\n",
       "      <td>天津</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>C轮</td>\n",
       "      <td>文娱丨内容</td>\n",
       "      <td>6k-10k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]</td>\n",
       "      <td>\\n        职位职责：\\n1、负责对日常业务数据进行分析、挖掘潜在隐患风险、提出风险...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3504</th>\n",
       "      <td>3680</td>\n",
       "      <td>高级审核编辑</td>\n",
       "      <td>字节跳动</td>\n",
       "      <td>天津</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>C轮</td>\n",
       "      <td>文娱丨内容</td>\n",
       "      <td>8k-12k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]</td>\n",
       "      <td>\\n        职位职责：\\n1、根据审核标准，对自媒体发布的国内热点、新闻、优质内容做...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3505</th>\n",
       "      <td>3681</td>\n",
       "      <td>数据运营分析专员</td>\n",
       "      <td>字节跳动</td>\n",
       "      <td>天津</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>C轮</td>\n",
       "      <td>文娱丨内容</td>\n",
       "      <td>6k-8k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]</td>\n",
       "      <td>\\n        职位职责：\\n1、协助数据分析团队项目的测试及开展，了解公司各部门的组织...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3506</th>\n",
       "      <td>3682</td>\n",
       "      <td>数据运营分析实习生</td>\n",
       "      <td>字节跳动</td>\n",
       "      <td>天津</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>C轮</td>\n",
       "      <td>文娱丨内容</td>\n",
       "      <td>2k-3k</td>\n",
       "      <td>不限</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]</td>\n",
       "      <td>\\n        职位职责：\\n1、协助数据分析团队项目的测试及开展，了解公司各部门的组织...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3507 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      index   positionName companyShortName city companySize education  \\\n",
       "0         0        高级数据分析师              拉勾网   北京   500-2000人        本科   \n",
       "1         1          数据分析师         OK Group   北京   500-2000人        大专   \n",
       "2         2        高级数据分析师           金山办公软件   北京     2000人以上        本科   \n",
       "3         3          数据分析师           金山办公软件   北京     2000人以上        本科   \n",
       "4         4          数据分析师             京东集团   北京     2000人以上        本科   \n",
       "...     ...            ...              ...  ...         ...       ...   \n",
       "3502   3678  内容运营高级经理-审核方向             字节跳动   天津     2000人以上        本科   \n",
       "3503   3679      质检岗位基层管理岗             字节跳动   天津     2000人以上        本科   \n",
       "3504   3680         高级审核编辑             字节跳动   天津     2000人以上        本科   \n",
       "3505   3681       数据运营分析专员             字节跳动   天津     2000人以上        本科   \n",
       "3506   3682      数据运营分析实习生             字节跳动   天津     2000人以上        本科   \n",
       "\n",
       "     financeStage industryField   salary workYear  \\\n",
       "0           D轮及以上          企业服务  25k-35k    5-10年   \n",
       "1              B轮            金融  25k-45k    5-10年   \n",
       "2            上市公司         移动互联网  15k-25k     3-5年   \n",
       "3            上市公司         移动互联网  15k-25k     1-3年   \n",
       "4            上市公司            电商  15k-30k     3-5年   \n",
       "...           ...           ...      ...      ...   \n",
       "3502           C轮         文娱丨内容  20k-30k       不限   \n",
       "3503           C轮         文娱丨内容   6k-10k     3-5年   \n",
       "3504           C轮         文娱丨内容   8k-12k     3-5年   \n",
       "3505           C轮         文娱丨内容    6k-8k     3-5年   \n",
       "3506           C轮         文娱丨内容    2k-3k       不限   \n",
       "\n",
       "                                                 hitags  \\\n",
       "0     [\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...   \n",
       "1                                                   NaN   \n",
       "2                                                   NaN   \n",
       "3                                                   NaN   \n",
       "4                                [\"免费班车\",\"免费体检\",\"地铁周边\"]   \n",
       "...                                                 ...   \n",
       "3502                                                NaN   \n",
       "3503                                                NaN   \n",
       "3504                                                NaN   \n",
       "3505                                                NaN   \n",
       "3506                                                NaN   \n",
       "\n",
       "                       companyLabelList  \\\n",
       "0         [\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]   \n",
       "1          [\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]   \n",
       "2         [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "3         [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "4         [\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]   \n",
       "...                                 ...   \n",
       "3502  [\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]   \n",
       "3503  [\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]   \n",
       "3504  [\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]   \n",
       "3505  [\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]   \n",
       "3506  [\"扁平管理\",\"弹性工作\",\"大厨定制三餐\",\"就近租房补贴\"]   \n",
       "\n",
       "                                             job_detail  \n",
       "0     \\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...  \n",
       "1     \\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...  \n",
       "2     \\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...  \n",
       "3     \\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...  \n",
       "4     \\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...  \n",
       "...                                                 ...  \n",
       "3502  \\n        职位职责：\\n1、负责字节跳动旗下产品图文类及小视频类内容的业务管理，对...  \n",
       "3503  \\n        职位职责：\\n1、负责对日常业务数据进行分析、挖掘潜在隐患风险、提出风险...  \n",
       "3504  \\n        职位职责：\\n1、根据审核标准，对自媒体发布的国内热点、新闻、优质内容做...  \n",
       "3505  \\n        职位职责：\\n1、协助数据分析团队项目的测试及开展，了解公司各部门的组织...  \n",
       "3506  \\n        职位职责：\\n1、协助数据分析团队项目的测试及开展，了解公司各部门的组织...  \n",
       "\n",
       "[3507 rows x 13 columns]"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65946622",
   "metadata": {},
   "source": [
    "### 过滤非数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "d5cbcb7a",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0        True\n",
       "1        True\n",
       "2        True\n",
       "3        True\n",
       "4        True\n",
       "        ...  \n",
       "3502    False\n",
       "3503    False\n",
       "3504    False\n",
       "3505    False\n",
       "3506    False\n",
       "Name: positionName, Length: 3507, dtype: bool"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = job['positionName'].str.contains('数据分析')\n",
    "cond"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "09a08fbe",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-77-412a4f3de483>:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  job = job[cond]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(1652, 13)"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job = job[cond]\n",
    "job.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "39c1e6d4",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>level_0</th>\n",
       "      <th>index</th>\n",
       "      <th>positionName</th>\n",
       "      <th>companyShortName</th>\n",
       "      <th>city</th>\n",
       "      <th>companySize</th>\n",
       "      <th>education</th>\n",
       "      <th>financeStage</th>\n",
       "      <th>industryField</th>\n",
       "      <th>salary</th>\n",
       "      <th>workYear</th>\n",
       "      <th>hitags</th>\n",
       "      <th>companyLabelList</th>\n",
       "      <th>job_detail</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>拉勾网</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>本科</td>\n",
       "      <td>D轮及以上</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>25k-35k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>[\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...</td>\n",
       "      <td>[\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]</td>\n",
       "      <td>\\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>OK Group</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>B轮</td>\n",
       "      <td>金融</td>\n",
       "      <td>25k-45k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]</td>\n",
       "      <td>\\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>京东集团</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>电商</td>\n",
       "      <td>15k-30k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>[\"免费班车\",\"免费体检\",\"地铁周边\"]</td>\n",
       "      <td>[\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]</td>\n",
       "      <td>\\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1647</th>\n",
       "      <td>3177</td>\n",
       "      <td>3352</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>华泛信息</td>\n",
       "      <td>苏州</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>大专</td>\n",
       "      <td>不需要融资</td>\n",
       "      <td>移动互联网,其他</td>\n",
       "      <td>10k-15k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"技能培训\",\"节日礼物\",\"带薪年假\",\"绩效奖金\"]</td>\n",
       "      <td>\\n岗位职责：\\n深入了解项目组的业务需求,在此基础上进行数据收集、数据分析、商业报告的撰写...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1648</th>\n",
       "      <td>3178</td>\n",
       "      <td>3353</td>\n",
       "      <td>大数据分析师</td>\n",
       "      <td>德融嘉信</td>\n",
       "      <td>苏州</td>\n",
       "      <td>50-150人</td>\n",
       "      <td>本科</td>\n",
       "      <td>不需要融资</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>6k-12k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[]</td>\n",
       "      <td>\\n岗位职责：\\n1. 开展业务专题分析，使用数据挖掘各类算法构建相关的业务模型，完成业务分...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1649</th>\n",
       "      <td>3404</td>\n",
       "      <td>3580</td>\n",
       "      <td>ETL/大数据/数据分析/实施</td>\n",
       "      <td>格蒂电力</td>\n",
       "      <td>天津</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>未融资</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>6k-12k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"技能培训\",\"带薪年假\",\"绩效奖金\",\"岗位晋升\"]</td>\n",
       "      <td>\\n工作职责\\n1.   负责数据接入、数据整合中的链路配置与调度配置工作。\\n职位要求\\n...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1650</th>\n",
       "      <td>3405</td>\n",
       "      <td>3581</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>吉城美家</td>\n",
       "      <td>天津</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>未融资</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>7k-14k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"五险一金\",\"岗位晋升\"]</td>\n",
       "      <td>\\n负责站点日常数据分析、提前通过数据分析对业务有预测性、通过数据说话、解决站点管理问题、\\n</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1651</th>\n",
       "      <td>3406</td>\n",
       "      <td>3582</td>\n",
       "      <td>数据分析支持</td>\n",
       "      <td>云链供应链</td>\n",
       "      <td>天津</td>\n",
       "      <td>15-50人</td>\n",
       "      <td>本科</td>\n",
       "      <td>未融资</td>\n",
       "      <td>金融,企业服务</td>\n",
       "      <td>4k-6k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[]</td>\n",
       "      <td>\\n        岗位职责：\\n1、负责部门日常数据报表的制定、维护、优化；\\n2、支持运...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1652 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      level_0  index     positionName companyShortName city companySize  \\\n",
       "0           0      0          高级数据分析师              拉勾网   北京   500-2000人   \n",
       "1           1      1            数据分析师         OK Group   北京   500-2000人   \n",
       "2           2      2          高级数据分析师           金山办公软件   北京     2000人以上   \n",
       "3           3      3            数据分析师           金山办公软件   北京     2000人以上   \n",
       "4           4      4            数据分析师             京东集团   北京     2000人以上   \n",
       "...       ...    ...              ...              ...  ...         ...   \n",
       "1647     3177   3352            数据分析师             华泛信息   苏州     2000人以上   \n",
       "1648     3178   3353           大数据分析师             德融嘉信   苏州     50-150人   \n",
       "1649     3404   3580  ETL/大数据/数据分析/实施             格蒂电力   天津   500-2000人   \n",
       "1650     3405   3581            数据分析师             吉城美家   天津     2000人以上   \n",
       "1651     3406   3582           数据分析支持            云链供应链   天津      15-50人   \n",
       "\n",
       "     education financeStage industryField   salary workYear  \\\n",
       "0           本科        D轮及以上          企业服务  25k-35k    5-10年   \n",
       "1           大专           B轮            金融  25k-45k    5-10年   \n",
       "2           本科         上市公司         移动互联网  15k-25k     3-5年   \n",
       "3           本科         上市公司         移动互联网  15k-25k     1-3年   \n",
       "4           本科         上市公司            电商  15k-30k     3-5年   \n",
       "...        ...          ...           ...      ...      ...   \n",
       "1647        大专        不需要融资      移动互联网,其他  10k-15k     1-3年   \n",
       "1648        本科        不需要融资         移动互联网   6k-12k     1-3年   \n",
       "1649        大专          未融资          企业服务   6k-12k     3-5年   \n",
       "1650        本科          未融资         移动互联网   7k-14k     1-3年   \n",
       "1651        本科          未融资       金融,企业服务    4k-6k     1-3年   \n",
       "\n",
       "                                                 hitags  \\\n",
       "0     [\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...   \n",
       "1                                                   NaN   \n",
       "2                                                   NaN   \n",
       "3                                                   NaN   \n",
       "4                                [\"免费班车\",\"免费体检\",\"地铁周边\"]   \n",
       "...                                                 ...   \n",
       "1647                                                NaN   \n",
       "1648                                                NaN   \n",
       "1649                                                NaN   \n",
       "1650                                                NaN   \n",
       "1651                                                NaN   \n",
       "\n",
       "                   companyLabelList  \\\n",
       "0     [\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]   \n",
       "1      [\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]   \n",
       "2     [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "3     [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "4     [\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]   \n",
       "...                             ...   \n",
       "1647  [\"技能培训\",\"节日礼物\",\"带薪年假\",\"绩效奖金\"]   \n",
       "1648                             []   \n",
       "1649  [\"技能培训\",\"带薪年假\",\"绩效奖金\",\"岗位晋升\"]   \n",
       "1650                [\"五险一金\",\"岗位晋升\"]   \n",
       "1651                             []   \n",
       "\n",
       "                                             job_detail  \n",
       "0     \\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...  \n",
       "1     \\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...  \n",
       "2     \\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...  \n",
       "3     \\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...  \n",
       "4     \\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...  \n",
       "...                                                 ...  \n",
       "1647  \\n岗位职责：\\n深入了解项目组的业务需求,在此基础上进行数据收集、数据分析、商业报告的撰写...  \n",
       "1648  \\n岗位职责：\\n1. 开展业务专题分析，使用数据挖掘各类算法构建相关的业务模型，完成业务分...  \n",
       "1649  \\n工作职责\\n1.   负责数据接入、数据整合中的链路配置与调度配置工作。\\n职位要求\\n...  \n",
       "1650    \\n负责站点日常数据分析、提前通过数据分析对业务有预测性、通过数据说话、解决站点管理问题、\\n  \n",
       "1651  \\n        岗位职责：\\n1、负责部门日常数据报表的制定、维护、优化；\\n2、支持运...  \n",
       "\n",
       "[1652 rows x 14 columns]"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.reset_index(inplace=True)#重置行索引\n",
    "job"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b2f6099",
   "metadata": {},
   "source": [
    "### 薪水处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "61540f3a",
   "metadata": {},
   "outputs": [],
   "source": [
    "#applymap 和map类似，map操作series，applymap操作的DataFrame\n",
    "job['salary'] = job['salary'].str.lower().str.extract(r'(\\d+)[k]-(\\d+)[k]')\\\n",
    "            .applymap(lambda x : int(x)).mean(axis = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79ed9182",
   "metadata": {},
   "source": [
    "### 技能要求"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e07ed842",
   "metadata": {},
   "source": [
    "Python\n",
    "SQL\n",
    "Tableau\n",
    "Excel\n",
    "SPSS/SAS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "d9e50125",
   "metadata": {},
   "outputs": [],
   "source": [
    "job['job_detail'] = job['job_detail'].str.lower()#变成小写"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "a31d6f74",
   "metadata": {},
   "outputs": [],
   "source": [
    "job['python'] = job['job_detail'].map(lambda x :1 if 'python' in x else 0) \n",
    "job['SQL'] = job['job_detail'].map(lambda x : 1 if 'sql' in x else 0)\n",
    "job['Tableau'] = job['job_detail'].map(lambda x : 1 if 'tableau' in x else 0)\n",
    "job['Excel'] = job['job_detail'].map(lambda x : 1 if 'excel' in x else 0)\n",
    "job['SPSS/SAS'] = job['job_detail'].map(lambda x : 1 if ('spss' in x) or ('sas' in x)  else 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "325812d4",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>level_0</th>\n",
       "      <th>index</th>\n",
       "      <th>positionName</th>\n",
       "      <th>companyShortName</th>\n",
       "      <th>city</th>\n",
       "      <th>companySize</th>\n",
       "      <th>education</th>\n",
       "      <th>financeStage</th>\n",
       "      <th>industryField</th>\n",
       "      <th>salary</th>\n",
       "      <th>workYear</th>\n",
       "      <th>hitags</th>\n",
       "      <th>companyLabelList</th>\n",
       "      <th>job_detail</th>\n",
       "      <th>python</th>\n",
       "      <th>SQL</th>\n",
       "      <th>Tableau</th>\n",
       "      <th>Excel</th>\n",
       "      <th>SPSS/SAS</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>拉勾网</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>本科</td>\n",
       "      <td>D轮及以上</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>30.0</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>[\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...</td>\n",
       "      <td>[\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]</td>\n",
       "      <td>\\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>OK Group</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>B轮</td>\n",
       "      <td>金融</td>\n",
       "      <td>35.0</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]</td>\n",
       "      <td>\\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>20.0</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>20.0</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>京东集团</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>电商</td>\n",
       "      <td>22.5</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>[\"免费班车\",\"免费体检\",\"地铁周边\"]</td>\n",
       "      <td>[\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]</td>\n",
       "      <td>\\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   level_0  index positionName companyShortName city companySize education  \\\n",
       "0        0      0      高级数据分析师              拉勾网   北京   500-2000人        本科   \n",
       "1        1      1        数据分析师         OK Group   北京   500-2000人        大专   \n",
       "2        2      2      高级数据分析师           金山办公软件   北京     2000人以上        本科   \n",
       "3        3      3        数据分析师           金山办公软件   北京     2000人以上        本科   \n",
       "4        4      4        数据分析师             京东集团   北京     2000人以上        本科   \n",
       "\n",
       "  financeStage industryField  salary workYear  \\\n",
       "0        D轮及以上          企业服务    30.0    5-10年   \n",
       "1           B轮            金融    35.0    5-10年   \n",
       "2         上市公司         移动互联网    20.0     3-5年   \n",
       "3         上市公司         移动互联网    20.0     1-3年   \n",
       "4         上市公司            电商    22.5     3-5年   \n",
       "\n",
       "                                              hitags  \\\n",
       "0  [\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...   \n",
       "1                                                NaN   \n",
       "2                                                NaN   \n",
       "3                                                NaN   \n",
       "4                             [\"免费班车\",\"免费体检\",\"地铁周边\"]   \n",
       "\n",
       "                companyLabelList  \\\n",
       "0  [\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]   \n",
       "1   [\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]   \n",
       "2  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "3  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "4  [\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]   \n",
       "\n",
       "                                          job_detail  python  SQL  Tableau  \\\n",
       "0  \\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...       1    1        0   \n",
       "1  \\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...       0    1        0   \n",
       "2  \\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...       1    1        0   \n",
       "3  \\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...       0    1        0   \n",
       "4  \\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...       0    1        1   \n",
       "\n",
       "   Excel  SPSS/SAS  \n",
       "0      0         0  \n",
       "1      0         0  \n",
       "2      0         0  \n",
       "3      0         1  \n",
       "4      1         1  "
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b35d3e52",
   "metadata": {},
   "source": [
    "### 行业信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "e54bbec8",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0           企业服务\n",
       "1             金融\n",
       "2          移动互联网\n",
       "3          移动互联网\n",
       "4             电商\n",
       "5             教育\n",
       "6             金融\n",
       "7          移动互联网\n",
       "8     移动互联网,消费生活\n",
       "9          移动互联网\n",
       "10      移动互联网,电商\n",
       "11       游戏,数据服务\n",
       "12      移动互联网,电商\n",
       "13      移动互联网,电商\n",
       "14          消费生活\n",
       "15         移动互联网\n",
       "16      移动互联网,金融\n",
       "17            硬件\n",
       "18            教育\n",
       "19    移动互联网,数据服务\n",
       "20      移动互联网,教育\n",
       "21         文娱丨内容\n",
       "22         移动互联网\n",
       "23      移动互联网,教育\n",
       "24    移动互联网,数据服务\n",
       "25      移动互联网,社交\n",
       "26    移动互联网,数据服务\n",
       "27            金融\n",
       "28    移动互联网,数据服务\n",
       "29    移动互联网,数据服务\n",
       "Name: industryField, dtype: object"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job['industryField'][:30]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "0b71bd0e",
   "metadata": {
    "code_folding": []
   },
   "outputs": [],
   "source": [
    "def convert(x):\n",
    "    field = x.split(',')\n",
    "    if (field[0] == '移动互联网') & (len(field) > 1):\n",
    "        return field[1]\n",
    "    else:\n",
    "        return field[0]\n",
    "job['industryField'] = job.industryField.map(convert)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "688ce4f8",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      企业服务\n",
       "1        金融\n",
       "2     移动互联网\n",
       "3     移动互联网\n",
       "4        电商\n",
       "5        教育\n",
       "6        金融\n",
       "7     移动互联网\n",
       "8      消费生活\n",
       "9     移动互联网\n",
       "10       电商\n",
       "11       游戏\n",
       "12       电商\n",
       "13       电商\n",
       "14     消费生活\n",
       "15    移动互联网\n",
       "16       金融\n",
       "17       硬件\n",
       "18       教育\n",
       "19     数据服务\n",
       "20       教育\n",
       "21    文娱丨内容\n",
       "22    移动互联网\n",
       "23       教育\n",
       "24     数据服务\n",
       "25       社交\n",
       "26     数据服务\n",
       "27       金融\n",
       "28     数据服务\n",
       "29     数据服务\n",
       "Name: industryField, dtype: object"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job['industryField'][:30]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "37fb12ad",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "307.2px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
